1

テキストボックスの内容を変更しようとしています(最新バージョンのアドオン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で非常に簡単だったものが、今回は非常に困難である(または少なくとも非常に直感的でない)ことが判明しました。

4

1 に答える 1

0

関数全体をコンテンツスクリプト内に含めることができない場合(これが簡単になる場合は、関数を別のファイルに入れることができます)、メッセージをコンテンツスクリプトに戻すことができますが、これにはコンテンツスクリプト内の関数が必要です。メッセージを受信します。コンテンツスクリプトの操作を参照してください。

于 2011-05-20T23:12:40.800 に答える