Я пытаюсь написать команду Ubiquity, которая позволяет вам заменить выбранную ссылку или URL-адрес, указывающий на изображение с этим изображением. Однако функция CmdUtils.setSelection() (задокументированная here) ничего не делает, если в выборе присутствуют какие-либо теги html, что делает их бесполезными для замены любых ссылок. При выборе простого текста он функционирует точно так, как предполагалось, заменяя текст тегом <img src="text"/>
. Есть ли что-то, что мне не хватает, или эта функция просто не позволит мне заменить html? Если это так, есть ли функция или метод, которые позволят мне это сделать? Любые другие советы приветствуются!Ubiquity CmdUtils.setSelection не заменит HTML
CmdUtils.CreateCommand({
name: "fetch-image",
author: {name: "Josh Timmer"},
license: "GPL",
description: "Replaces links or URLs pointing to images with the image itself",
help: "Highlight text or a hyperlink and execute this command",
takes: {"image URL": /.*/},
_getImgUrl: function(itemIq) {
if (itemIq.html.indexOf("<a ",0) < 0)
return itemIq.text;
var refPos = itemIq.html.indexOf("href=\"",0);
if (refPos < 0)
return "Error, no URL found!";
var startPos = itemIq.html.indexOf("\"", refPos);
var endPos = itemIq.html.indexOf("\"", startPos + 1);
startPos += 1;
var url = itemIq.html.substring(startPos, endPos);
return url;
},
preview: function(pblock, input) {
pblock.innerHTML = "Image URL: " + this._getImgUrl(input) + "<br/><br/><img src='" + this._getImgUrl(input) + "'/>";
},
execute: function img_insert(input) {
CmdUtils.setSelection("<img src='" + this._getImgUrl(input) + "'/>");
displayMessage("Executed: " + this._getImgUrl(input));
}
});