【问题标题】:How do I execute code after the user reloads a page? (Chrome Extension)用户重新加载页面后如何执行代码? (Chrome 扩展程序)
【发布时间】:2017-10-15 12:42:26
【问题描述】:

我想创建一个 Chrome 扩展程序,在用户重新加载选项卡时执行一些代码,例如通过点击重新加载按钮。我试图通过webNavigation API 通过监听reloadtransitionType 来做到这一点。但是,我似乎无法让它工作。这是我的代码:

ma​​nifest.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 文件中吗?最终它会播放声音。

【问题讨论】:

标签: javascript google-chrome-extension


【解决方案1】:

据我看来,transitiontype 是事件的一个属性,因此请尝试按如下方式更正您的代码:

chrome.webNavigation.onCommitted.addListener(function(d) {
    if (d.transitionType == "reload") {
        // code goes here e.g. an alert
        alert("You reloaded");
    }
});

注意:如果您单击历史记录中的链接,这也会触发代码

【讨论】:

  • Nitpick:传递给回调的参数不是传统 JS 意义上的“事件”;它只是文档调用details 的一堆属性,与Event 对象本身(即chrome.webNavigation.onCommitted)没有关联或预期的属性。因此,我建议将 e 重命名为其他名称,以避免与 DOM 事件混淆。
  • @Xan,对,我修好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多