手始めに、ページ スクリプトからコンテンツ スクリプトへの通信を許可しようとしてきました。ドキュメントが正確であれば、これは簡単なはずです。これが私がやっていることです。 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);
}
これは、この機能の本格的なバグか、ドキュメントの問題のように見えます...カスタムイベントを介して通信しようとして同様の問題が発生したため、少しバナナに行きます...