Javascript 在用户重新加载页面后,如何执行代码?(镀铬扩展)
我想创建一个Chrome扩展,当用户重新加载选项卡时(例如,通过点击重新加载按钮)执行一些代码。我试图通过Javascript 在用户重新加载页面后,如何执行代码?(镀铬扩展),javascript,google-chrome-extension,Javascript,Google Chrome Extension,我想创建一个Chrome扩展,当用户重新加载选项卡时(例如,通过点击重新加载按钮)执行一些代码。我试图通过webNavigationAPI,通过监听reload的transitionType来实现这一点。然而,我似乎无法让它发挥作用。这是我的密码: manifest.json { "manifest_version": 2, "name": "Sample Extension", "description": "Sample Chrome Extension", "version
webNavigation
API,通过监听reload
的transitionType
来实现这一点。然而,我似乎无法让它发挥作用。这是我的密码:
manifest.json
{
"manifest_version": 2,
"name": "Sample Extension",
"description": "Sample Chrome Extension",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions":[
"webNavigation"
]
}
background.js
chrome.webNavigation.onCommitted.addListener(function(transitionType) {
if (transitionType.status == "reload") {
// code goes here e.g. a console log
console.log("You reloaded");
}
});
知道我哪里出错了吗?另外,我是否应该将可执行代码(此处显示为警报)放在单独的.js文件中?最终,它将播放声音。据我所知,从文档中可以看出,transitiontype是事件的一个属性,因此请尝试按如下方式更正代码:
chrome.webNavigation.onCommitted.addListener(function(d) {
if (d.transitionType == "reload") {
// code goes here e.g. an alert
alert("You reloaded");
}
});
注意:如果单击历史记录中的链接,也会触发代码挑剔:传递给回调的参数不是传统JS意义上的“事件”;文档调用的只是一组属性
详细信息
,与事件对象本身(即chrome.webNavigation.onCommitted
)没有关联或不需要属性。因此,我建议将e
重命名为其他名称,以避免与DOM事件混淆。@Xan,对,我修复了它。应避免使用alert()
;如果只是这样的话,但通常是因为阻塞代码不能很好地与ChromeAPI配合使用。对于面向用户的通知,请使用chrome.notifications
,对于调试,请使用console.log
和好友(但请确保)