5

An example would be if my extension overrides the newtab page and the user installs another extension that also overrides the newtab page. Currently, only one newtab extension shows up and it usually isn't mine.

What can I do to detect when such a conflict occurs and inform the user of such?

The management API doesn't tell me if the extensions override any pages, so I sadly can't use that.

4

1 回答 1

4

这似乎不是 API 的现有功能。我建议您在http://crbug.com上打开一个错误。

如果做不到这一点,您可以执行以下讨厌的 hack(我没有测试过):

  1. 让您的新标签页在加载时向您的背景页面发送一条消息。

  2. 监听chrome.webNavigation.onBeforeNavigate处理的事件chrome://newtab

    chrome.webNavigation.onBeforeNavigate.addListener(function(details) {
        /* send message */
    }, { url: [{ urlEquals: 'chrome://newtab/' }] });
    
  3. webNavigation看到浏览器加载chrome://newtab但不久之后您没有看到后台页面的消息时,您的新标签页可能没有被使用。从那里,您可以发送通知,或打开另一个带有通知的选项卡/窗口。

不幸的是,这需要webNavigation许可,如果您的扩展不需要许可,这是不幸的。它带有的警告(“此扩展程序可以访问您的选项卡和浏览活动”)可能会吓跑一些潜在用户,尤其是在用户没有明显理由的情况下。(再说一遍,也许我对用户的安全意识过于乐观了。)如果您的扩展程序当前使用tabsAPI,那么无论如何它已经带有此通知。

于 2013-07-24T16:52:16.900 回答