Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在用户重新加载页面后,如何执行代码?(镀铬扩展)_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 在用户重新加载页面后,如何执行代码?(镀铬扩展)

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

我想创建一个Chrome扩展,当用户重新加载选项卡时(例如,通过点击重新加载按钮)执行一些代码。我试图通过
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
和好友(但请确保)