对于初学者,我一直在尝试允许从页面脚本到内容脚本的通信。如果文档是准确的,这应该很容易。这就是我正在做的事情,我相信完全符合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:
这是我的现场测试用例:
主.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);
}
这真的看起来像是此功能的完整错误或文档问题......我在尝试通过自定义事件进行通信时遇到了类似的问题,所以有点香蕉......