javascript - IE9 "Access is Denied"错误,访问IFrame时

标签 javascript jquery cross-domain

我的计算机 (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/

相关文章:

javascript - 覆盖 JavaScript 函数

javascript - 未捕获的类型错误 : Cannot read property '_myPrivateFunction' of undefined

java - 如何使用ajax、json中返回的数组

javascript - IE,XDomainRequest 并不总是有效

javascript - 如何将参数从链接元素传递到模态窗口?

javascript - 如何将 JavaScript 对象复制到临时变量中,以便在更改属性后恢复原始对象?

javascript - Deferred Promise - 在每个函数完成后一个一个地运行函数

javascript - 同一域上的CORS错误?

HTML - 为什么我的预加载资源再次加载?

javascript - 带有 show(0).delay(3000).hide(0) 的 IE7 错误