我在同一个文件夹中有两个本地.html文件。一个页面打开一个窗口与另一个页面,并尝试在新打开的窗口中调用一个函数。但是,函数调用失败了,我在控制台中得到了这个:
不安全的JavaScript尝试使用URL文件:///***/B.html从具有URL文件:///***/A.html的框架访问框架。域,协议和端口必须匹配。
Chrome和Webkit(Mac)都会出现这种情况。有没有办法可以:禁用file://协议的跨域检查,或者在不同的本地文件中调用javascript函数?
答案 0 :(得分:2)
您可以使用window.postMessage执行以下操作:
初始窗口html文件:
<!DOCTYPE html>
<html>
<head>
<script>
var otherWindow;
function openOther() {
otherWindow = window.open("other.html", "otherWindow");
}
function otherFunc() {
otherWindow.postMessage("otherFunc", "*");
}
</script>
</head>
<body>
<div onclick="openOther()">Open the other window</div>
<div onclick="otherFunc()">Call the other window's function</div>
</body>
</html>
第二个窗口的Html:
<!DOCTYPE html>
<html>
<head>
<script>
window.addEventListener("message", function(event) {
alert("The other window's function executed.");
}, false);
</script>
</head>
<body>
<div>This is the other window.</div>
</body>
</html>
这是window.postMessage的一个很好的参考。