【问题标题】:Firefox Error: Permission Denied to get Window.DocumentFirefox 错误:获取 Window.Document 的权限被拒绝
【发布时间】:2009-06-23 22:31:40
【问题描述】:

我有一个标准的 3 帧布局;左侧的“fnav”,顶部的“fheader”和标题下方的“fcontent”。所有文件都位于本地硬盘上。

这是抛出错误的 JS 函数:

函数 writeHeaderFrame() { 尝试 { var headerFrame = window.top.frames['fheader']; var headerTable = document.getElementById('headerTable'); if (headerFrame && headerTable) { headerFrame.document.body.style.backgroundColor = "黑色"; var headerFrameBody = headerFrame.document.documentElement.childNodes[1]; headerFrameBody.innerHTML = headerTable.innerHTML; } else if (headerTable) { // 有headerTable,但是没有headerFrame headerTable.style.display = 'inline' // 显示 headerTable } } catch (e) { alert('来自 header.js, writeHeaderFrame(): ' + e.message); } }

单击 fnav 中的链接(或最初加载框架集)将内容加载到 fcontent 中,然后 fcontent 中的 JS 文件加载“标题”框架......或者无论如何它应该加载。 Javascript 最初运行良好,但每当单击链接时,我都会收到以下错误:

获取 Window.document 的权限被拒绝

我无法确定原因。任何和所有建议将不胜感激。

【问题讨论】:

    标签: javascript firefox


    【解决方案1】:

    首先,请发布您单击这些链接时正在运行的代码及其 html。

    其次,你有错字吗? Window.document 应该是 window.document,不是吗? (小写w)

    编辑对 OP 问题更改的响应

    如果没有 html,这有点难说,但如果我在黑暗中冒险,我会说这行:

    headerFrame.document.body.style.backgroundColor = "Black";
    

    导致错误。看起来 headerFrame 位于不同的域中,出于安全原因,您无权修改该框架的内容。当然,下面的一些行也会有同样的问题。

    有关类似情况,另请参阅 http://userscripts.org/topics/25029http://www.webdeveloper.com/forum/showthread.php?t=189515

    编辑 2

    来自 Mozilla 开发中心

    注意:Firefox 3 更改了 Windows 文档的安全性,因此只有它所在的域才能访问该文档。虽然这可能会破坏一些现有网站,但这是 Firefox 3 和 Internet Explorer 7 共同采取的举措,并提高了安全性。

    (见https://developer.mozilla.org/En/DOM/Window.document

    【讨论】:

      【解决方案2】:

      我猜你正试图从不同的来源操纵窗口或文档。 HTML5(以及所有现代浏览器,甚至 IE :D )强制(或试图强制)所谓的“同源策略”。基本上,来自一个来源的 JS 不能与来自不同来源的文档或窗口的 DOM 交互。

      什么是原点?在基本层面上,您可以将域替换为原点并且几乎是正确的,但完整的规则集是

      在所有可能的情况下,Firefox 只是收紧了他们过去没有应用同源策略的一个领域。

      【讨论】:

        【解决方案3】:

        显然,有问题的用户在没有将以下设置更改为“false”的情况下更新了他的安装,这允许本地文档可以访问所有其他本地文档。

        pref("security.fileuri.strict_origin_policy", true);

        这解释了为什么我无法在我的机器上复制错误。

        非常感谢大家的帮助。

        【讨论】:

          【解决方案4】:

          您是否尝试过安装Firebug 并确定是哪一行引发了错误?我猜由于问题被标记为 Firefox,因此您会看到它发生在其中。

          如果您可以使用此 Javascript 发布模板 HTML 页面,那将是最有帮助的。

          【讨论】:

            【解决方案5】:

            脚本/框架页面是否都在同一个域中?如果没有,这是意料之中的。如果它们不在同一个域中,则不能从另一个窗口访问 window.document。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-01-02
              • 2018-07-19
              • 1970-01-01
              • 1970-01-01
              • 2016-09-25
              • 2015-09-16
              • 2012-02-11
              相关资源
              最近更新 更多