Chrome扩展程序 - 访问iframe元素

时间:2012-07-09 12:37:50

标签: javascript google-chrome iframe google-chrome-extension

我使用iframecontent script添加到srcchrome.extension.getURL(myPage)设置为content script。稍后在某些事件中,我想从框架中检索一些元素。我在var textFrame = document.getElementById('iframeId'); var text = (textFrame.contentDocument || textFrame.contentWindow.document).getElementById('someDivId'); 中尝试了以下代码:

manifest

但它会引发以下错误:

  

不安全的JavaScript尝试使用URL访问框架   chrome-extension://ipkjfhkdgodpcgpjepdjhcbfcbbbcpee/TopBar.html来自   网址为http://theInjectedPage.com/xxx/xxx/xxx的框架。域,   协议和端口必须匹配。

all_frames文件中,true设置为 "permissions": [ "tabs", "chrome://favicon/", "http://*/*", "https://*/*" ], "background": { "scripts": ["Javascript/background.js"] }, "content_scripts": [ { "matches": ["http://*/*"], "js": ["Javascript/References/jquery-1.7.min.js","Javascript/content_script.js"], "run_at": "document_start", "all_frames": true } ], "web_accessible_resources": ["TopBar.html","Javascript/TopBar.js","Javascript/References/jquery-1.7.min.js"]

请帮我解决这个问题。


更新:以下是我的清单文件的一部分:

{{1}}

1 个答案:

答案 0 :(得分:2)

您的权限没有任何问题,但我只是想知道为什么你从chrome得到这个错误,TopBar.html页面试图访问该框架? 你是通过content_script创建iframe的吗? 你给iframe的网址是什么?

您可以在打开iframe的每个页面中查看它注入的代码示例。

<强>的manifest.json

{
  "name":"example",
  "description": "",
  "version": "1.0",
  "manifest_version": 2,
  "permissions": [],
  "content_scripts": [
    {
      "all_frames": true,
      "matches": ["http://*/*","https://*/*"],
      "css": [],
      "js": ["content_script.js"]
    }]
}

content_script.js

var iframe= document.createElement("iframe");
iframe.setAttribute("width", "100%");
iframe.setAttribute("height", "200px;");
iframe.setAttribute("src", "http://gamalshaban.me/blog");
document.body.appendChild(iframe);

我也上传了此示例扩展程序,您可以从此link

下载