我試圖改變文本框(使用最新版本的附加SDK,1.05b)的內容。我能夠得到它的內容,但我無法找到我如何改變它。這裏是我的代碼的相關部分:如何更改Firefox附加SDK(Jetpack)中文本框的值?
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?我試圖將node.value作爲參數傳遞給self.postMessage函數,但它不起作用。我想要實現的是一樣的東西:
node.value = someMyFunction(node.value);
我也想這樣做內部
' node.value = someMyFunction(node.value); ' + ...
一部分,但隨後說,someMyFunction未在此背景下定義(我知道這定義是因爲我測試了
console.log(someMyFunction(text));
工作)。
我被困在這一點上。有小費嗎?我既不能強迫某些MyFunction進入contentScript的範圍,也不能在'onMessage'中獲得'節點'。以前的插件SDK版本過去非常簡單,這次非常困難(至少非常不直觀)。
我有完全一樣的問題 - 任何你從你的內容腳本傳遞給你的'onMessage'處理程序獲取JSONified。你甚至不能發短信回內容腳本,因爲沒有['port'(https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/port)財產在其他「工人」 - 啓用插件實用程序。 – mucaho 2015-05-30 19:21:08
見bug報告https://bugzilla.mozilla.org/show_bug.cgi?id=824348 – mucaho 2015-05-30 19:38:41