【问题标题】:Chrome-extension "Cannot read property 'onUpdated' of undefined"Chrome 扩展“无法读取未定义的属性‘onUpdated’”
【发布时间】:2014-07-10 09:39:22
【问题描述】:

我有一个脚本,我想每 10 秒注入一个页面。 我使用此代码:

chrome.tabs.onUpdated.addListener(function(tabId,tab){
    chrome.tabs.executeScript(null,{file:"program.js"});
  }
);

program.js 看起来像这样:

$("body").prepend("Hello World!");  
setTimeout(function(){location.reload();},10000);

意思是页面应该每 10 秒刷新一次并注入这段代码,它可以正常工作,但有时(尤其是在运行多个选项卡时)我会收到此错误:

Uncaught TypeError: Cannot read property 'onUpdated' of undefined 

我猜它没有得到 tabId 什么的。
但是我解决不了。

非常感谢您的帮助。

【问题讨论】:

  • 为什么null 作为第一个参数?如果你不想要它,你可以跳过它,我认为它是可选的。
  • 谢谢,我这样做了,但还是同样的错误。
  • 你在哪里写这段代码?在后台脚本或内容脚本中?
  • 后台脚本(background.js)
  • 我已经多次看到这个错误,但无法重现它,所以我从不报告它。我只在开发和解包中见过它。尤其是当我经常使用重新加载按钮时。

标签: javascript jquery google-chrome google-chrome-extension


【解决方案1】:

我只在chrome.runtime.onMessageExternal.addListener 上遇到了同样的问题,而chrome 会抱怨onMessageExternal。就像@scott-f 指出的那样,这个错误的原因是“滥用”重新加载按钮。我删除并重新安装了扩展程序,它工作正常。

事后看来,我建议您使用 cli 中的 --load-extensions='extension/path' 来使用鼠标测试您的扩展程序,以避免在 chrome 菜单中导航的开销,并使用 Selenium 来自动化您的测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多