- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
chrome.browserAction.setBadgeText(object details)
用于设置 chrome 扩展的徽章文本。但是,如果 tabId 不存在,Chrome 会使用 console.error()
产生以下错误:
Unchecked runtime.lastError while running browserAction.setBadgeText: No tab with id: ####.
当在页面加载期间设置徽章文本时,这会成为一个问题。如果选项卡最初存在但被用户关闭,setBadgeText
最终会使用不存在的 tabId
进行调用。
通常,这可以通过检查有问题函数的回调参数中的 chrome.runtime.lastError
来防止 as was answered in another question .但是,由于 browserAction.setBadgeText()
没有回调参数,似乎没有办法避免错误。
当 tabId
是一个不代表任何选项卡的整数时,下面的代码仍然会产生错误,即使它试图...
try...catch
捕获错误 (因为 console.error()
没有被抛出所以它不起作用)。 setBadgeText
之后检查 lastError
(因为该函数是异步的,所以不起作用)。setBadgeText
之后使用各种 setTimeout
间隔来检查 lastError
(这不起作用并且可能不可靠)。setBadgeText
(由于没有第二个参数,chrome 在使用时会产生另一个错误,因此已将其注释掉)。var tabId = 5000;
function clearError () {
console.log(chrome.runtime.lastError);
}
try {
chrome.browserAction.setBadgeText({
text: 'text',
tabId: tabId
}/*, clearError*/);
clearError();
setTimeout(clearError, 0);
setTimeout(clearError, 50);
setTimeout(clearError, 500);
}
catch (e) {
console.log('Caught', e);
clearError();
}
是否有任何方法可以正确检查 chrome.runtime.lastError
以防止发生此错误?
最佳答案
一个选项是调用 chrome.tabs.get首先,如果没有调用错误,则假设该选项卡将在接下来的几毫秒内存在。
var tabId = 5000;
function callback(tab) {
if (chrome.runtime.lastError) {
console.log(chrome.runtime.lastError.message);
} else {
chrome.browserAction.setBadgeText({
text: 'text',
tabId: tabId
});
}
}
chrome.tabs.get(tabId, callback);
当然,在 tabs.get
完成和 setBadgeText
被调用之间,选项卡总是有可能关闭,但这种可能性很小。
关于javascript - 在 browserAction.setBadgeText 期间无法检查 runtime.lastError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131089/
在我的实际 Chrome 扩展程序中与一个奇怪的错误斗争了几个小时后,我终于成功确定了以下 MCVE: 背景.js chrome.runtime.onMessage.addListener(funct
这不是重复的! - 嗯,读完评论后,也许是这样。 我正在寻找一种在 C#、Visual Studio 2015、目标 .NET Framework 4.5.2、OS = Windows 7 中将控制台
我在应用程序中使用 chrome.fileSystem API 来打开文件。当我单击文件选择器对话框的取消按钮时,出现错误: Unchecked runtime.lastError while run
我需要复制chrome.runtime.lastError功能。当自定义函数未捕获chrome.runtime.lastError时,如何触发触发警告? if(self.chrome == null)
我设法构建了 Ripple Emulator 开源 (https://github.com/apache/incubator-ripple)。 我按照说明(Jake build)构建了它,它创建了 C
chrome.browserAction.setBadgeText(object details)用于设置 chrome 扩展的徽章文本。但是,如果 tabId 不存在,Chrome 会使用 cons
我正在使用 Firefox 浏览器的 JavaScript 调试器来调试我的插件。我得到了几十个重复 未选中的 lastError 值:错误:ID 已存在:追加 未选中的 lastError 值:错误
我正在编写一个 Chrome 扩展程序,我想在其中卸载另一个扩展程序。我正在关注文档,但收到此错误: Unchecked runtime.lastError while running managem
我的 chrome 扩展有以下两个 javascript: background.js ,作为后台脚本运行: chrome.runtime.onMessage.addListener(function
我有一个使用以下代码的 Chrome 扩展程序: chrome.tabs.onUpdated.addListener( function(tabId, changeInfo, tab) {
我正在尝试检查 chrome.storage.local 中是否设置了键值对。为此,我寻求了类似问题的帮助here .这里我试图从存储中获取的变量还没有被我设置。当我尝试使用 lastError 捕获
我的代码几年来一直没有报告任何问题。它设置了一个低级键盘钩子(Hook),用户可以使用它来激活应用程序。 m_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_
我正在尝试创建一个非常简单的 Chrome 扩展程序,它允许我突出显示网页上的一个词,右键单击以打开上下文菜单,然后通过简单地将该词附加到搜索 URL,在名为 Whitaker's Words 的数据
我在background.html 页面中遇到此异常。我不知道这个异常(exception)说什么。谁能解释一下这个异常,并告诉我如何解决这个异常。 异常详细信息是 Unchecked runtime
请原谅我的任何明显错误,因为我是 Chrome 扩展的新手,但 Chrome 消息传递 API 的这个错误已经讨论过 here , here ,和here过去,常见的 react 是“禁用现有的 Ch
所以我尝试从 background.js 脚本向内容脚本发送消息,但我收到此错误 Unchecked runtime.lastError: Could not establish connection
我已经四处寻找,但都是关于人们提示这个错误的。许多帖子说您应该检查所有扩展。 但是,这是我在开发扩展程序时遇到的。 这是如何发生的: 我在 background.js 上有一个听众: chrome.e
最近,据报道我的应用程序的上下文菜单消失了。如果您删除该应用程序并重新安装它,它就可以工作。但消失再次发生。 我发现了一个错误。我不确定该错误是否导致上下文菜单消失。但我想解决这个问题,因为我发现的就
我正在编写我的 Google Chrome 扩展程序,其中我从后台脚本设置应用程序的图标,如下所示: try { objIcon = { "19": "images/icon1
我能够成功注册一个服务 worker ,但是当我尝试一个简单的控制台日志时,我得到以下结果 - dev tools screenshot 看起来像是某种路由错误,但我不知道如何修复它。 我的代码是这样
我是一名优秀的程序员,十分优秀!