Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展-访问iframe元素_Javascript_Google Chrome_Iframe_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展-访问iframe元素

Javascript Chrome扩展-访问iframe元素,javascript,google-chrome,iframe,google-chrome-extension,Javascript,Google Chrome,Iframe,Google Chrome Extension,我正在使用内容脚本将src设置为chrome.extension.getURL(myPage)向页面添加iframe。稍后在某个事件中,我想从框架中检索一些元素。我在内容脚本中尝试了以下代码: var textFrame = document.getElementById('iframeId'); var text = (textFrame.contentDocument || textFrame.contentWindow.document).getElementById('someDivId

我正在使用
内容脚本
src
设置为
chrome.extension.getURL(myPage)
向页面添加
iframe
。稍后在某个事件中,我想从框架中检索一些元素。我在
内容脚本中尝试了以下代码:

var textFrame = document.getElementById('iframeId');
var text = (textFrame.contentDocument || textFrame.contentWindow.document).getElementById('someDivId');  
但它会抛出以下错误:

不安全的JavaScript试图使用URL访问帧 铬-extension://ipkjfhkdgodpcgpjepdjhcbfcbbbcpee/TopBar.html 从…起 带有URL的框架。域名, 协议和端口必须匹配

清单
文件中
所有帧
都设置为
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"]

你的权限没有问题,但我只是想知道为什么你从chrome上得到这个错误,页面TopBar.html试图访问框架?? 您是否通过content_脚本创建iframe? 你给iframe的url是什么

您可以检查它在打开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\u 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);

我还上传了这个示例扩展名,您可以从这里下载它

是让元素在内容脚本中运行的代码,还是background/popup.js?它在
内容脚本中运行
。在清单中html文件列为web可访问文件吗@批量-是的,它列在
web\u accessible\u resources
@NaveenBhat Hi Naveen中-只是想知道你是否找到了这个问题的答案。谢谢大卫,我查过了。我尝试了我能想到的所有可能的权限。然而,在我看来,跨域脚本编写是一个
javascript
限制。还有其他解决办法吗?我用清单文件的一部分更新了这个问题。请让我知道,如果我遗漏了一些东西。是的,我正在从
content\u script
向页面注入
$(“#injected ifrmaeId”).attr('src',chrome.extension.getURL(topBarPage))
作为旁注:
当你在一天左右更新你的答案时,请使用前缀
@
ex:
@Knvn
评论相关人员。否则,将不会通知他。谢谢您的努力。然而,这并不能解决我的问题。我可以将
chrome扩展资源页面
插入并加载到活动页面中。我的问题是从
content script
上的
iframe
检索内容时。