0

手始めに、ページ スクリプトからコンテンツ スクリプトへの通信を許可しようとしてきました。ドキュメントが正確であれば、これは簡単なはずです。これが私がやっていることです。 https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/content-scripts/communicating-with-other -scripts.html#Using%20the%20DOM%20postMessage%20API :

そして、これが私のライブテストケースです:

main.js:

exports.main = function() {
    var data = require('sdk/self').data,
            pageMod = require('sdk/page-mod');

    pageMod.PageMod({
        include: '*',
        contentScriptFile: data.url('postMessageRelay.js'),
    });
};

postMessageRelay.js

// Trying with window.addEventListener also doesn't work
document.defaultView.addEventListener('message', function (e) { // e.data, e.origin

    console.log('would be good if it got here:'+e.data);

});
console.log('it gets here at least');

通常の HTML ファイル内の JavaScript (ファイルやローカルホストではなく、通常のリモート サーバー上):

try {
    window.postMessage('webappfind', window.location.href);
}
catch(e) {
    alert(e);
}

これは、この機能の本格的なバグか、ドキュメントの問題のように見えます...カスタムイベントを介して通信しようとして同様の問題が発生したため、少しバナナに行きます...

4

1 に答える 1

1

バグ 910972で回答済みですが、SO の将来の訪問者のためにここに残しておきます。

この問題は、ページが head タグですぐに起動postMessageすることにあったため、page-mod スクリプトはメッセージ イベントをリッスンするページにまだアタッチされていません。この例のようなページ スクリプトとコンテンツ スクリプト間のやり取りは、このタイミングが考慮されている限り機能します。

于 2013-09-06T13:24:10.230 に答える