Firefox浏览器。允许通过javascript访问IFrame元素

时间:2014-02-04 14:17:08

标签: html firefox iframe cors x-frame-options

我正在编写一个工具,用于在外部网页上查找css选择器。它是包含iframe与目标站点和少量控制元素的简单html页面。所有逻辑也使用jquery在javascript中,所以现在没有服务器端。

我遇到的问题是无法使用Firefox 26.0向iframe文档元素添加处理程序/类。示例代码:

 iframe.contents().find("*").hover(function() {
     console.log("This is " + $(this).get(0).tagName + "element");
 }

我在控制台中收到了下一条错误消息:Error: Permission denied to access property 'document'。我知道它确实是一个安全功能,但我只需要以某种方式解决它。

我尝试了什么:

  • 使用谷歌浏览器 - 它允许运行具有特殊标志(--disable-web-security)的浏览器,该标志会关闭此类安全功能。它有所帮助,我的工具正如我预期的那样工作,但我需要使用Firefox。
  • 使用插件https://addons.mozilla.org/en-US/firefox/addon/forcecors/。它根本没有帮助。我还试图通过该工具添加x-frames-origin header,但没有结果。
  • 在firefox配置中关闭security.fileuri.strict_origin_policy标志。也没有帮助。

也许我错过了一些东西,还有一些其他的解决方法/更好的解决方案?我会感激任何帮助。

更新:页面和iframe不在同一网站上。我的工具只是本地的.html文件,iframe源码 - 任何网站(维基百科,雅虎等)

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。我使用了一个插件GreaseMonkey。 它允许我将我的js代码插入到iframe中,因此我可以使用消息API与我的页面中的代码进行交互。例子:

  • 阻止在父窗口中运行代码:if (window.top == window.self) return;
  • 从主窗口收到内容:window.addEventListener('message', yourHandlerHere, false);
  • 向主窗口发帖:window.parent.postMessage(yourDataHere);