我正在研究firefox插件。我有2个脚本filler.js和aws.js
filler.js
document.getElementById("orderNow").addEventListener("click", function() {
var domain = 'https://www.amazon.com/';
var openWin = window.open(domain);
//message sender
var message = "WS Iron Man";
openWin.postMessage(message,domain); //sending the message
});
aws.js
window.onload = function () {
//alert('page loaded successfully'); //alert function working here
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
if (event.origin !== "http://localhost/waveapp/includes/pages/order_details.html")
return;
// alert to check function working or not
var msg = event.data;
alert(msg);
}
};
manifest.json
{
"manifest_version": 2,
"name": "Borderify",
"version": "1.0",
"description": "Copy details to amazon.com.",
"icons": {
"48": "icons/border-48.png"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["filler.js"]
},
{
"matches": ["*://*.amazon.com/*"],
"js": ["aws.js"]
}
],
"permissions": [
"clipboardRead",
"unlimitedStorage",
"storage"
]
}
在本地主机上运行的filler.js和在amazon.com上运行的aws.js。这是一个Firefox扩展程序。
我跑步时,在控制台中收到错误消息
“ 无法在'DOMWindow'上执行'postMessage':提供的目标原点('https://www.amazon.com')与收件人窗口的原点('null')” >
也收到此味精
” “ https://www.amazon.com”上的跟踪器“ http://localhost”自动授予存储访问权限”
请帮助我修复它,对不起我的英语不好
答案 0 :(得分:0)
我建议您阅读Window.postMessage()。
它说,我引用:
通常,允许不同页面上的脚本相互访问 当且仅当它们源自的页面共享相同的协议时, 端口号和主机(也称为“同源策略”)。 window.postMessage()提供了一种受控机制来安全地 规避此限制(如果使用得当)。
所以这不是CORS错误,因为这些错误在这种情况下不适用。
发生这种情况的原因有多种:
window.open
和window.postMessage
之间进行操作,这可能会更改引用中存储的内容