在iframe中更改iframe的src

时间:2014-03-25 04:58:36

标签: javascript jquery html iframe

当我尝试在iframe中更改iframe的src时,我在Chrome中遇到此问题(在本地运行文件),我收到此错误消息

  

错误=未捕获的SecurityError:无法从'HTMLIFrameElement'读取'contentDocument'属性:阻止具有原点“null”的帧访问具有原点“null”的帧。协议,域和端口必须匹配。

这是我用来检索iframe的代码

iframe = $("iframe").contents().find('iframe');
iframe.attr("src", url);`

将文件上传到服务器时,我不会遇到此问题。但如果我在本地打开它我就会收到错误。

它在firefox和safari中运行良好。

我如何在chrome和其他浏览器中执行此操作?

1 个答案:

答案 0 :(得分:11)

所有浏览器内置的安全功能可确保Javascript无法与其他窗口和/或框架中的对象进行交互(如果这些Windows或框架是从其他网站加载的)。这通常被称为“同源政策”。是否从其他站点加载了某些内容由URL的主机名部分决定。例如,如果从http://yoursite.com加载外框并且从http://example.com加载内框,那么在外框范围内运行的Javascript将无法访问或修改其中的任何属性或对象。内框的范围。

在这种情况下,特定错误表明您的Javascript(在外部框架的上下文中运行)被拒绝访问其范围是内部框架的对象(contentDocument)。在您尝试使用的jQuery中隐藏的某个地方将隐式访问框架的文档元素(由该iframe的contentDocument属性访问)。

您可以通过销毁iframe并使用所需的src重新创建新的iframe来解决此问题。