【问题标题】:Error: Can't access property href [duplicate]错误:无法访问属性 href [重复]
【发布时间】:2013-03-20 04:04:33
【问题描述】:

我正在使用 NODE JS 模块来创建 HTTP 服务器。服务器的响应是一个包含 JavaScript 的页面,该页面在 . 这是响应代码:

<html>
<head>
<script type='text/javascript'>
function test() {
document.body.innerHTML='<iframe id="ifool" src="URL" sandbox="allow-same-origin allow-forms allow-scripts"> </iframe>';
var c;                 
window.setInterval(function(){
c=document.getElementById("ifool").contentWindow.location.href; 
window.history.pushState(0,0,c);  
},100);
</script>
</head>
<body onload= "test()">
</body>
</html>

我正在使用带有 FF 的 Firebug。我收到以下错误:

 Error: Permission denied to access property 'href'
    c=document.getElementById("ifool").contentWindow.location.href;

【问题讨论】:

标签: javascript html node.js web


【解决方案1】:

如果您尝试在 iframe 中访问的 URL 位于当前页面域之外,那么您将无法访问。现代浏览器实现了Same Origin Policy,它决定了运行跨站点脚本时 JavaScript 的权限。

当父母和孩子来自同一个域时,他们可以互相访问;子进程可以访问和操作父进程的属性和方法,反之亦然。但是,当他们不这样做时,尝试此类访问将触发脚本错误,指示权限被拒绝。

如果我尝试使用指向节点服务器托管的页面的页面和 iframe 源运行类似的脚本,我不会收到权限错误。

来源:

  1. http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/
  2. error : Permission denied to access property 'document'
  3. Access parent URL from iframe
  4. <iframe> javascript access parent DOM across domains?

【讨论】:

  • 这适用于即使您在同一台服务器上但您的父级使用localhost/app1 而您的 iframe 使用servername/app2(这在调试时让我感到困惑)
猜你喜欢
  • 2015-06-13
  • 1970-01-01
  • 2018-05-15
  • 2011-11-05
  • 2014-04-18
  • 1970-01-01
  • 2013-02-01
  • 2012-12-28
相关资源
最近更新 更多