首先,我的页面中有这个iframe。
<iframe src="https://192.168.100.87/index.html">
<p>Browser does not support iframe</p>
</iframe>
我的页面标题中有以下脚本。
<head>
<script type="text/javascript">
function callMe(){
alert('called');
}
</script>
</head>
我从远程机器的index.html获得以下代码。
<body>
<input type="button" value="Click" onClick="window.parent.callMe()" />
</body>
正如您所看到的,我正在调用包含iframe的主页面功能。 但不幸的是我无法调用该函数。
这可能吗,我在这里缺少什么? 感谢
答案 0 :(得分:2)
您无法在其他域访问属性或调用Windows方法。但是,您可以使用postMessage
向其他域的框架发送邮件(请参阅https://developer.mozilla.org/en-US/docs/DOM/window.postMessage)。
试试parent.postMessage('testing', '*');
。第一个参数是要发送的数据;第二个是你要发送给它的窗口的域。使用'*'
,您可以将其发送给任何主机,但为了更好的安全性,您应该使用父级的实际域。
然后在您的父页面中:
window.addEventListener('message', function(event) {
if (event.data == 'testing') {
callMe();
}
});
这仅适用于现代浏览器。如果您需要支持旧浏览器(如IE 7或更早版本),请查找postMessage polyfill。
答案 1 :(得分:1)
除非代码运行的机器也在192.168.100.87,否则这是不可能的。您无法从不同来源的页面访问任何内容。见https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript