Я пытаюсь изменить содержимое текстового поля (используя последнюю версию Add-on 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 в функцию, которую я определил? Я пытался передать node.value в качестве параметра функции self.postMessage, но он не работает. Я пытаюсь достичь чего-то вроде:
node.value = someMyFunction(node.value);
Я тоже пытался сделать это внутри
' node.value = someMyFunction(node.value); ' + ...
часть, но затем говорится, что someMyFunction не определена в этом контексте (я знаю, что она определена, потому что я проверял, что
console.log(someMyFunction(text));
работает).
Я застрял в этой точке. Какие-нибудь советы? Я не могу ни принудительно заставить someMyFunction войти в область действия contentScript, ни получить «узел» внутри «onMessage». То, что раньше было очень легко в предыдущих версиях Add-on SDK, на этот раз оказалось очень сложным (или, по крайней мере, очень не интуитивным).