我有一个包含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.
不确定这是否与扩展问题有关。
答案 0 :(得分:1)
这是一个跨源错误。
跨域问题涉及iframe之间的沟通。您 可以随时嵌入任何iframe,但如果来源不同,iframe不能 彼此互动。
您无法访问iframe的内容。
同源策略的基础是窗口可以工作 只有当它们来自同一时,彼此的背景 协议://域:端口,