画像を指す選択したリンクまたはURLをその画像自体に置き換えることができるUbiquityコマンドを作成しようとしています。ただし、CmdUtils.setSelection()関数(ここに記載)は、選択範囲にhtmlタグが存在する場合は何もしないようであり、リンクを置き換えるのに役立ちません。プレーンテキストを選択すると、意図したとおりに機能し、テキストが<img src="text"/>タグに置き換えられます。私が見逃しているものはありますか、それともこの関数は単に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));
}
});