我的计算机 (localhost) 上有一个 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" />
但是当我按下“确定”按钮时,它会抛出一个“Access is Denied”
错误。我在使用 jQuery 模拟 iframe 中的点击时也遇到同样的错误:
var btn = window.frames[0].document.getElementsByName('click_me');
btn[0].click();
最佳答案
在 JavaScript 中,您无权访问不同域中的框架。它叫做 Same origin Policy .例如,如果允许这样做,您可以打开一个隐藏框架来加载 facebook 和 google+ 并窃取每个人的信息!
在某些情况下,可以绕过同源策略,但您需要明确地将域列入白名单。就像使用 Cross-origin resource sharing 时一样.因此可以动态地 (AJAX/XMLHTTPRequest) 从另一个域获取数据,但您也必须控制另一个域。
关于javascript - IE9 "Access is Denied"错误,访问IFrame时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042793/