我正在使用Firefox插件。我有2个脚本填充物和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_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在我的localhost和aws.js上运行在Amazon.com上。这是一个firefox扩展。
当我运行时,我会在控制台中获得错误味精
" 在'domwindow'上无法执行'postmessage':提供的目标原点('https://www.amazon.com'(与收件人窗口的origin('null'("
也获得此msg
" 存储访问自动授予跟踪器" https://www.amazon.com",on" http://localhost" >"
请帮助我修复它,对我的英语不好,对不起
我建议您阅读到window.postmessage((。
它说,我引用:
通常,允许不同页面上的脚本相互访问 当且仅当页面源自共享同一协议时, 端口号和主机(也称为"相同原始策略"(。 window.postmessage((提供了一种控制的机制来安全 规避此限制(如果正确使用(。
因此,这不是CORS错误,因为这些错误在这种情况下不适用。
可能发生这种情况的原因有很多:
- 您实际上使用的URL与提供的URL
- 您已经关闭了打开的窗口(关闭时,窗口将把所有内容都设置为null(
- 您正在在
window.open
和window.postMessage
之间做某事,这可能会更改您的参考中存储的内容