0

現在、Safari 5 の拡張機能に取り組んでおり、設定が変更されるたびにリスナー機能を実行したいと考えています。Apple はその例を提供していますが、私にはうまくいきません。現在、グローバル html ファイルにこのリスナー関数があります。

function numberChanged() 
{
     if(event.key == "number")
         alert("Number has changed!");
}

safari.self.addEventListener("change", numberChanged, false);

誰かが私を助けてくれることを願っています。誰かが私が間違っていることを知っていますか?

4

1 に答える 1

4

関数のパラメーターとして「イベント」を含める必要があると思うので、次のようになります。

function numberChanged(event) 
{
     if(event.key == "number")
         alert("Number has changed!");
}

ただし、それは私にとっても(パラメーターの有無にかかわらず)適切に機能していないため、間違っている可能性があります。興味深いことに、このスタック オーバーフロー フォームのフィールドを変更したりボタンをクリックしたりするたびに、設定を変更していなくても、アラート (あなたのアラートと同様) が発生します。完全に奇妙です。

更新:ついに機能しました。アップルが提供する例は間違っています。したがって、答えには2つの部分があります。上記の最初の部分を示しました — 'event' をパラメーターとして関数に追加する必要があります。2 番目の部分は、設定オブジェクトで addeventlistener を実行する必要があり、Apple が示しているように、global.html ページの「self」を使用しないことです。したがって、ワーキングコールは次のようになります。

safari.extension.settings.addEventListener("change",numberChanged,false);
于 2010-06-13T18:46:19.073 に答える