And*_*szl 6 javascript manifest reload onupdate google-chrome-extension
所以我想在选项卡重新加载指定的URL时运行脚本.它几乎可以工作,但实际上id不会:)这是我的清单文件:
{
"manifest_version": 2,
"name": "Sample Extension",
"description": "Sample Chrome Extension",
"version": "1.0",
"content_scripts":
[
{
"matches": ["http://translate.google.hu/*"],
"js": ["run.js"]
}
],
"permissions":
[
"activeTab",
"tabs"
],
"browser_action":
{
"default_title": "Sample",
"default_icon": "icon.png"
}
}
Run Code Online (Sandbox Code Playgroud)
这是run.js:
chrome.tabs.onUpdated.addListener(
function ( tabId, changeInfo, tab )
{
if ( changeInfo.status === "complete" )
{
chrome.tabs.executeScript( null, {file: "program.js"} );
}
}
);
Run Code Online (Sandbox Code Playgroud)
programs.js只是提醒一些文本(还).当我向run.js的第一行发出警报时,它会发出警报,但是当我把它放在if中时,却没有.我找不到问题.我输错了什么吗?
小智 11
如果您想检测清单 3(也可能是 2)中的 background.js 的重新加载,chrome.tabs.onUpdated 方法对我不起作用:/它被调用了太多次。
这最终对我有用!
// --- On Reloading or Entering example.com ---
chrome.webNavigation.onCommitted.addListener((details) => {
if (["reload", "link", "typed", "generated"].includes(details.transitionType) &&
details.url === "http://example.com/") {
codeAfterReload();
// If you want to run only when the reload finished (at least the DOM was loaded)
chrome.webNavigation.onCompleted.addListener(function onComplete() {
codeAfterReloadAndFinishSomeLoading();
chrome.webNavigation.onCompleted.removeListener(onComplete);
});
}
});
Run Code Online (Sandbox Code Playgroud)
有关更多过渡类型:https ://developer.chrome.com/docs/extensions/reference/history/#transition_types
祝你好运 :)
Bea*_*ist 10
假设http://translate.google.hu/*页面是您希望在重新加载时注入代码的页面,您将不得不以稍微不同的方式进行处理.目前,您总是将代码注入这些页面(没有权限,不能少),然后尝试chrome.tabs在内容脚本中使用api,这是您无法做到的.相反,我们将把监听器放在后台页面中,只在页面刷新时注入代码,就像你想要的那样.首先是清单:
{
"manifest_version": 2,
"name": "Sample Extension",
"description": "Sample Chrome Extension",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions":[
"http://translate.google.hu/*", "tabs"
]
}
Run Code Online (Sandbox Code Playgroud)
background.js
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){
if (tab.url.indexOf("http://translate.google.hu/") > -1 &&
changeInfo.url === undefined){
chrome.tabs.executeScript(tabId, {file: "program.js"} );
}
});
Run Code Online (Sandbox Code Playgroud)
这将监听onUpdated事件,检查它是否是url我们要注入的事件之一,然后检查页面是否重新加载.最后一步是通过检查是否changeInfo.url存在来完成的.如果是,则表示该URL已更改,因此无法刷新.相反,如果它不存在,那么页面必须只刷新.
| 归档时间: |
|
| 查看次数: |
12292 次 |
| 最近记录: |