我正在尝试为google chrome做一个扩展程序:
加载www.example.com时运行 example.com有一个iframe到另一个网站,我需要访问这个iframe的链接(这是免费的,我需要抓取下载链接)
到目前为止一切顺利,但是......
然后我需要扩展名来通知链接url到example.com进行进一步处理。
任何想法o方向??
我已阅读http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication但无法使其正常工作......
答案 0 :(得分:37)
您需要注入2个内容脚本:
"content_scripts": [
{
"matches": ["http://www.example.com/*"],
"js": ["example.js"]
},{
"matches": ["http://www.rapidshare.com/*"],
"all_frames": true,
"js": ["rapidshare.js"]
}
]
要将链接从一个脚本转移到另一个脚本,您需要通过后台页面进行通信:
<强> rapidshare.js:强>
chrome.extension.sendRequest({url: "link"});
<强> background.js:强>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
chrome.tabs.sendRequest(sender.tab.id, request);
sendResponse({});
});
<强> example.js:强>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
console.log("received url:", request.url);
sendResponse({});
});
答案 1 :(得分:2)
iframe是浏览器的单独文档,这就是为什么您可以使用Chrome扩展程序并将其直接集成到iframe中的原因。您只需在chrome扩展清单文件中提及iframe的URL即可。我们将Chrome扩展应用的一些菜单和工具栏集成到iframe中。它有效。
有一篇很好的文章作为Chrome扩展程序和iFrame http://www.natewillard.com/blog/chrome/javascript/iframes/2015/10/20/chrome-communication/的其他信息
答案 2 :(得分:0)
v3:serg 的回答,对我有用
RollingDeploy
background.js:
"manifest_version": 3,
"content_scripts": [
{
"matches": ["http://www.rapidshare.com/*"],
"all_frames": true,
"js": ["insideIframe-content.js"]
}
]
insideIframe-content.js:
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
console.log(url)
})