【问题标题】:Changing src of iframe inside iframe在 iframe 中更改 iframe 的 src
【发布时间】:2014-05-02 18:36:44
【问题描述】:

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

错误 = 未捕获的安全错误:无法从“HTMLIFrameElement”读取“contentDocument”属性:阻止了来源为“null”的框架访问来源为“null”的框架。协议、域和端口必须匹配。

这是我用来检索 iframe 的代码

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

当我将文件上传到服务器时,我没有遇到这个问题。但是,如果我在本地打开它们,我会收到错误消息。

它在 Firefox 和 safari 中运行良好。

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

【问题讨论】:

  • 你为什么要这样做?似乎有比多层 iframe 更好的方法。
  • 您遇到了与Same Origin Policy 相关的问题。要在本地进行测试,请确保不要对域名进行硬编码。
  • @user3232331 不确定,2 iframes ?还是 1 个带有 1 iframe 的文档?感谢分享。
  • @user3232331 请看帖子。感谢分享。希望这会有所帮助

标签: javascript jquery html iframe


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多