我的计算机(本地主机)上有一个html页面(test.html)。在页面上的iframe中,我加载了abc.example.com。
我想从另一个域xyz.example.com访问iframe abc.example.com的内容。这是我到目前为止尝试过的:
//test.html in abc.example.com
<input type="textbox" />
<input type="submit" value="click_me" />
//Start.html in xyz.example.com
<script type="text/javascript">
$(document).ready(function() {
$("#ok").click(function() {
//using javascript
var oo = document.getElementById("myFrame");
document.getElementById("divFrame").innerHTML =
oo.contentWindow.document.body.innerHTML;
});
});
</script>
<iframe id="myFrame" src="http://localhost/exam/test.html"></iframe>
<div id="divFrame"></div>
<input type="submit" id="ok" />但是当我按下"ok“按钮时,它抛出了一个"Access is Denied"错误。在使用jQuery模拟iframe中的点击时,我也得到了相同的错误:
var btn = window.frames[0].document.getElementsByName('click_me');
btn[0].click();发布于 2012-08-21 02:14:56
在JavaScript中,您不能访问不同域上的帧。它被称为Same origin Policy。如果这是允许的,例如,你可以打开一个隐藏的框架来加载facebook和google+并窃取每个人的信息!
在某些情况下,有一种绕过同源策略的方法,但您需要显式地将一个域列入白名单。就像使用Cross-origin resource sharing时一样。因此,可以动态(AJAX/XMLHTTPRequest)从另一个域获取数据,但也必须控制另一个域。
https://stackoverflow.com/questions/12042793
复制相似问题