對於初學者,我一直試圖允許從頁面腳本到內容腳本的通信。如果文檔是準確的,這應該很容易。下面是我在做什麼,我相信完全按照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:FF Addon SDK頁面mod腳本內容腳本通信不起作用
這是我的生活test case:
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');
和regular HTML file內的JavaScript(在普通的遠程服務器上,而不是文件或localho ST):
try {
window.postMessage('webappfind', window.location.href);
}
catch(e) {
alert(e);
}
這的確看起來像任何一個成熟的錯誤此功能或與文檔一個問題...我有類似的問題,嘗試通過custom events溝通那麼回事了一點香蕉...
您的插件代碼沒問題。但是您的測試網頁使用window.location.domain(==未定義)作爲目標原點。 – paa
對不起,被要求嘗試這個價值,並忘記我在這裏連接它。我已將它恢復爲「window.location.href」。但它也不適用於http://brett-zamir.me/tests/webappfind2.html的'*',雖然它在[window.open中使用]時有效(http://brett-zamir.me/ tests/webappfind3.html),有時當[從iframe到父母使用](http://brett-zamir.me/tests/webappfind-iframeHolder.html) –