【问题标题】:Open chrome extension page programmatically in same tab as website在与网站相同的选项卡中以编程方式打开 chrome 扩展页面
【发布时间】:2017-11-23 05:12:48
【问题描述】:

我正在制作一个基于 chrome 扩展的编辑器,我希望用户在收到这样的链接时能够在扩展中打开文件:http://myeditor.com/link.html?file=xxxx

访问该网站时,我希望:

  • 如果打开网址的人有扩展名,打开chrome-extension://blahblah/?file=xxx
  • else 显示文件的只读版本和安装扩展的链接。

现在,我在 link.html 文件中有一个如下所示的脚本:

    if (window.chrome) {
        if (chrome.app.getDetails() === null) {
            chrome.runtime.sendMessage(chromeId, { message: "isInstalled" }, function (reply) {
                if (reply) {
                    chrome.runtime.sendMessage(chromeId, { gotoUrl: document.location.search });
                }
            });
        }
    }

在扩展的 background.html 中:

chrome.runtime.onMessageExternal.addListener(
    function(request, sender, sendResponse) {
        if (request) {
            if (request.message) {
                if (request.message == "isInstalled") {
                    sendResponse(true);
                }
            }
            if (request.gotoUrl) {
                var url = chrome.extension.getURL(request.gotoUrl);

                chrome.tabs.create({url: url}); // how do I open this in the same tab rather than create a new tab?
            }
        }
        return true;
    });

问题是代码创建了一个新标签,有没有办法可以在与我调用它的页面相同的标签中打开扩展页面?

【问题讨论】:

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


    【解决方案1】:

    实际上chrome.tabs.update 而不是chrome.tabs.create 可以正常工作...

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 2010-09-30
      • 2014-05-21
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多