我的扩展程序通过单击pageAction按钮将JavaScript注入HTML文档。
当用户在安装扩展程序后导航到页面时,此方法可以正常工作。
首次安装扩展程序时,我可以显示pageAction按钮并侦听点击次数,但执行脚本调用无提示失败。
似乎executeScript函数对安装扩展程序之前加载的选项卡没有特权。
有解决这个问题的方法吗?
答案 0 :(得分:1)
我的Reload All Tabs扩展名存在完全相同的问题。基本上,当首次安装扩展时,除非重新加载选项卡,否则用户无法使用它。如您所知,自动重新加载用户标签的用户体验非常糟糕,因为他们可能正在做一些事情,他们会松开它。我最终使用executeScript
,因为它对用户来说确实是不可见的。您可以在GitHub上看到源代码:
https://github.com/mohamedmansour/reload-all-tabs-extension/blob/master/js/reload_controller.js#L96
基本上我使用该方法定位此问题的安装Detect Chrome extension first run / update,并使用chrome.windows.getAll
,chrome.tabs.getAllInWindow
和chrome.tabs.executeScript
准备首次安装时的扩展程序
chrome.windows.getAll({ populate: true }, function(windows) {
for (var w = 0; w < windows.length; w++) {
var tabs = windows[w].tabs;
for (var t = 0; t < tabs.length; t++) {
var tab = tabs[t];
// Only inject in web pages.
if (tab.url.indexOf('http') == 0) {
chrome.tabs.executeScript(tab.id, { file: 'content_script.js', allFrames: true });
}
}
}
});
如果executeScript不起作用,请在http://crbug.com/new提交一个错误,开发人员可以查看它。就我而言,它运作得很好。
希望有所帮助!