如何在弹出页面时加载页面时注入内容脚本
How to Inject content script when page loads while having a popup page?
我正在尝试使用googlechrome扩展的内容脚本方法注入我的代码。只有当我的清单没有弹出页面并且我的background.html有以下内容时,这才有效:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, { file: "content_script.js" });
});
});
在PoPup页面上,每次在chrome中加载新页面时,如何触发此代码?因为到目前为止,它的唯一工作方式是单击扩展的浏览器操作按钮。
同样在清单的内容脚本部分,我已经包括了所有这些:
"content_scripts": [
{
"matches": ["http://jquery.com/*"],
"all_frames":true,
"js": ["jquery.js","jquery-ui.min.js","content_script.js"],
"run_at": "document_end"
}
],
简短回答:每次更新页面时,从后台页面使用chrome.tabs.onUpdated.addListener
而不是chrome.browserAction.onClicked.addListener
来加载内容脚本。
长答案:事实上,当内容脚本是弹出页面时,您可以通过从清单中包含内容脚本或使用后台页面的程序注入(如您在问题中所建议的)来加载内容脚本。
从清单中:
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["http://myurl.com/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
}
],
"permissions": [
"http://myurl.com/*",
"tabs"
],
"background_page": "background.html",
"browser_action": {
"popup": "popup.html"
}
...
}
确保"matches"属性与要加载内容脚本的页面的URL匹配。
使用程序注入:
你可以使用你在问题中建议的方式,当点击浏览器操作时插入内容脚本或者你可以在每次更新浏览器URL时这样做:
chrome.tabs.onUpdated.addListener(function() {
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, { file: "content_script.js" });
});
});
相关文章:
- Safari扩展中的注入脚本;不要在Youtube上开火
- 通过innerHTML注入脚本:函数与全局
- 如何在访问其他url时在nodewebkit中注入脚本
- 按下按钮时动态注入脚本
- 是的.js在已加载的脚本上方注入脚本
- Chrome 扩展程序:在注入脚本之前,将数据从弹出窗口传递到另一个脚本文件
- 注入脚本以播放音频文件,如果 InnerText 与字符串不匹配
- 如何同步注入脚本
- 将值传递到“;注入脚本”;而不是依赖全局
- 正在使用ngBindHtml注入脚本标记
- 获取调用注入脚本的选项卡的url
- 如何在谷歌页面上搜索后注入脚本
- Chrome扩展:错误时发送消息从注入脚本回后台脚本
- 在注入脚本中使用扩展的localStorage包装器函数
- 从注入脚本到带有响应的内容脚本的通信
- 如何在protractor的浏览器实例中手动注入脚本标记
- tabs.executeScript()没有在扩展的内容页中注入脚本
- 错误注入脚本在其他选项卡在我的chrome扩展
- Angular 2 JSONP注入脚本没有调用回调错误
- Chrome扩展在页面加载前注入脚本