无法通过Chrome扩展程序与iFrame进行交互

时间:2015-09-15 11:40:05

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

我有一个包含iFrame的页面,它加载不同的网站,并希望能够与iFrame的内容进行交互(点击,聚焦,选择,输入值等..)。

到目前为止,我能够检查iFrame是否已加载,但一旦尝试执行简单的操作,例如隐藏元素,就没有任何反应。

的manifest.json

{

  "manifest_version": 2,
  "name": "my Extension",
  "version": "0.1",

  "content_scripts" : [
    {
      "matches": [
        "http://*.myPage.com/*",
        "https://*.iframePage.com/*"
      ],
      "js": ["lib/jquery-2.1.4.min.js", "content.js"]
    }
  ]

}

content.js

console.log('Page Loaded');

var myFrame = $('iframe');

myFrame.ready(function() {
  console.log('Frame Loaded');
});

铬合金中还有一个警告说:

Uncaught SecurityError: Blocked a frame with origin "https://www.iframePage.com" from accessing a frame with origin "http://www.myPage.com".  The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match.

不确定这是否与扩展问题有关。

1 个答案:

答案 0 :(得分:1)

这是一个跨源错误。

  

跨域问题涉及iframe之间的沟通。您   可以随时嵌入任何iframe,但如果来源不同,iframe不能   彼此互动。

您无法访问iframe的内容。

  

同源策略的基础是窗口可以工作   只有当它们来自同一时,彼此的背景   协议://域:端口,

请参阅此SO Answer-ways to circumvent Cross Domain