chrome扩展,以便在页面加载时运行脚本
chrome extension to run script on page load
我正在编写一个chrome扩展,它应该能够在加载后立即在该页面上运行脚本。我实现了在点击扩展图标时运行代码的功能,但当我添加代码在页面加载时运行该脚本时,它不起作用
清单文件
{
"name": "",
"description": "",
"version": "1.0",
"permissions": [
"activeTab",
"tabs"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "",
"default_icon": "6a00e3982283618833019affd3c028970c.png"
},
"manifest_version": 2
}
js文件:
chrome.tabs.onUpdated.addListener(
function ( tabId, changeInfo, tab )
{
if ( changeInfo.status === "complete" )
{
chrome.tabs.executeScript({
code: "console.log('dsff');"
});
}
});
但尽管如此,当任何用户更改选项卡中的页面时,我的js都不会运行
如果您向chrome.tabs.executeScript(...)
注册回调以捕获任何错误,例如:
chrome.tabs.executeScript({ code: "console.log('dsff');" }, function() {
if (chrome.runtime.lastError) {
console.log("ERROR: " + chrome.runtime.lastError.message);
}
});
您会注意到以下错误:
错误:无法访问url"…"的内容。扩展清单必须请求访问此主机的权限。
因此,您需要将适当的主机匹配模式添加到清单中的permissions
列表中。例如,为了能够将代码注入任何http/https
页面:
"permissions": ["*://*/*"]
此外,如果省略chrome.tabs.executeScript(...)
的tabId
参数,它将应用于当前活动的选项卡(可能会推迟到触发onUpdated
事件的选项卡)。因此,也要进行以下更改:
chrome.tabs.executeScript(tab.id, { code: "console.log('dsff');" }, function() {...
首先,为什么对内容和后台脚本都使用相同的文件(background.js)。
内容脚本不能使用chrome.*api的
相关文章:
- 如何在运行时在angular 2中加载外部js脚本
- 如何在加载网页时运行脚本
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 如何在加载角度函数后运行jQuery代码
- 如何使用特定的javascript函数创建一个url,以便在加载页面时运行
- Javascript - 加载函数运行时未定义的变量
- HTML/JS github页面项目没有't在使用firefox运行时加载图像或声音
- 如何让C#代码在页面加载时运行的jquery脚本之后运行
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- 如何在内部脚本完全加载后运行脚本
- 在不加载页面的情况下运行javascript
- 在运行时加载knockout.jslib
- Jquery脚本未在运行时加载编辑:意外的令牌
- Javascript:如何在页面重新加载后运行函数
- 在页面加载完成之前,使用URL参数运行JavaScript
- 无法使用javascript插件在首次运行时加载实际图像大小(图像在刷新后加载)
- 如何更改javascript的一个变量,然后运行;“加载”;而无需重新加载页面
- Jquery代码获胜'不是从页脚加载运行,而是从控制台运行
- 为什么 Ghost.py 不加载/运行我的Javascript
- 点击加载/运行此代码