テキストボックスの内容を変更しようとしています(最新バージョンのアドオンSDK、1.05bを使用)。内容は入手できましたが、どうすれば変更できるのかわかりませんでした。これが私のコードの関連部分です:
var deasciifyItem = contextMenu.Item({
label: "Label",
context: contextMenu.SelectorContext("input[type=text], textarea"),
contentScript: 'self.on("click", function (node) {' +
'var text = node.value;' +
'self.postMessage(text);' +
'});',
onMessage: function(text) {
if (text.length == 0) {
throw ("Text to convert must not be empty!");
}
console.log(text);
console.log(someMyFunction(text));
text = "A computed new value to replace the old value in text box!";
}
});
任意のテキストボックスの内容を読み取ってコンソールに記録できますが、定義した関数にnode.valueを渡すことで、その内容を変更するにはどうすればよいですか?node.valueをパラメータとしてself.postMessage関数に渡そうとしましたが、機能しません。私が達成しようとしているのは、次のようなものです。
node.value = someMyFunction(node.value);
私もそれを内部でやろうとしました
' node.value = someMyFunction(node.value); ' + ...
一部ですが、someMyFunctionがこのコンテキストで定義されていないことを示しています(テストしたので定義されていることを知っています
console.log(someMyFunction(text));
動作します)。
私はこの時点で立ち往生しています。任意のヒント?someMyFunctionをcontentScriptのスコープに強制することも、「onMessage」内の「ノード」を取得することもできません。以前のバージョンのアドオンSDKで非常に簡単だったものが、今回は非常に困難である(または少なくとも非常に直感的でない)ことが判明しました。