Как изменить значение текстового поля в Firefox Add-on SDK (Jetpack)? - PullRequest
1 голос
/ 21 мая 2011

Я пытаюсь изменить содержимое текстового поля (используя последнюю версию 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, на этот раз оказалось очень сложным (или, по крайней мере, очень не интуитивным).

1 Ответ

0 голосов
/ 21 мая 2011

Если вы не можете включить всю функцию в ваш скрипт контента (вы можете поместить свою функцию в отдельный файл, если это облегчает это), тогда вы можете отправить сообщение обратно в ваш скрипт контента, хотя для этого нужна функция внутри ваш контент-скрипт для получения сообщения. См. Работа со скриптами содержимого .

...