当我尝试在iframe中更改iframe的src时,我在Chrome中遇到此问题(在本地运行文件),我收到此错误消息
错误=未捕获的SecurityError:无法从'HTMLIFrameElement'读取'contentDocument'属性:阻止具有原点“null”的帧访问具有原点“null”的帧。协议,域和端口必须匹配。
这是我用来检索iframe的代码
iframe = $("iframe").contents().find('iframe');
iframe.attr("src", url);`
将文件上传到服务器时,我不会遇到此问题。但如果我在本地打开它我就会收到错误。
它在firefox和safari中运行良好。
我如何在chrome和其他浏览器中执行此操作?
答案 0 :(得分:11)
所有浏览器内置的安全功能可确保Javascript无法与其他窗口和/或框架中的对象进行交互(如果这些Windows或框架是从其他网站加载的)。这通常被称为“同源政策”。是否从其他站点加载了某些内容由URL的主机名部分决定。例如,如果从http://yoursite.com
加载外框并且从http://example.com
加载内框,那么在外框范围内运行的Javascript将无法访问或修改其中的任何属性或对象。内框的范围。
在这种情况下,特定错误表明您的Javascript(在外部框架的上下文中运行)被拒绝访问其范围是内部框架的对象(contentDocument)。在您尝试使用的jQuery中隐藏的某个地方将隐式访问框架的文档元素(由该iframe的contentDocument属性访问)。
您可以通过销毁iframe并使用所需的src重新创建新的iframe来解决此问题。