关于 jquery:Error: Permission denied to access property ‘document’ in iFrame

Error: Permission denied to access property 'document' in iFrame

我有一个父 html 页面,它使用 jquery 将一个动态 iframe 附加到另一个域中。我已经将 X-Frame-Options 设置为允许这样做并且加载纯内容不是问题。事实上,我所有的其他脚本似乎都运行良好。

在 iFrame 中加载的 html 页面使用了 jQuery DirtyForms 插件,该插件有几行看起来像 $(document)。脏表单代码和 jQuery 脚本都是 iframe 文档的本地代码。

当这些行中的任何一行执行时,我在 Firefox 中收到以下错误(我没有测试任何其他浏览器),错误:权限被拒绝访问属性"文档"。

我一直在阅读这个问题,如果父页面试图访问孩子的脚本或反之亦然,这似乎是一个问题,但在我的情况下,出错的脚本是孩子本地的。<铅>

顺便说一句。子代码,当未加载到 iFrame 中时,可以完美运行。

我现在正无所适从。

我假设 $(document) 以某种方式被评估为父级。

有什么方法可以纠正这种行为吗?也许通过修改插件代码。也许, $(document).find('contentWindow')...??

感谢您的帮助!谢谢。


好吧,您无法访问它..现在的问题是为什么?

为此,只需通过以下链接

权限被拒绝访问属性\\'document\\'

错误:权限被拒绝访问属性 \\'document\\'

在你的情况下,如果你想在页面加载时做任何事情,那么最好将下面的代码用于 IFrame

1
 &lt;iframe ........ onload='yourFunction( this )'>


在 Dirty Forms 1.x 中,默认行为将事件处理程序附加到当前页面所在的任何父页面中的锚标记。执行此操作的代码如下所示:

1
2
$(top.document).on('click', 'a', aBindFn);
$(top.document).on('submit', 'form', formBindFn);

也就是说,它将事件处理程序附加到 window.top.document。您可以使用以下命令关闭该行为:

1
$.DirtyForms.watchParentDocs = false;

在 Dirty Forms 2.x 中,此行为已被删除,因为它仅与 iFrame 的一个特定用例有关(在 iFrame 中托管使用?? Dirty Forms 的表单)。您现在可以自定义事件绑定以根据页面需要将事件处理程序附加到父(主机)页面或子 iFrame,但默认情况下不与 iFrame 交互。这应该使您能够解决诸如此类的问题。