0

我正在开发一个维护一组书签的 Chrome(打包)应用程序。这将在其自己的小窗口中打开。单击书签在浏览器中使用目标设置为“_blank”的链接将其打开。

在 Mac OS X 上,这些在 Safari 中打开。反正有没有让它们在 Chrome 中打开?

4

1 回答 1

0

当您在打包的应用程序中单击带有 target="_blank" 的链接时,Chrome 会尊重您选择的默认浏览器并在外部打开链接,无论它是什么,不一定是 Chrome。在您的情况下,默认系统浏览器必须是 Safari。

在 Chrome 中打开此类链接的简单方法是将其设为默认浏览器。

如果您不想这样做,但由于某种原因仍然坚持要在 Chrome 中的新标签页中打开您的链接,这是实现此目的的一种(也许是唯一的)方法:

  1. 为您的应用编写配套扩展程序并让您的用户安装它。
  2. 在应用程序中,将 onclick 处理程序附加到每个链接,并使用 chrome.runtime.sendMessage() 向扩展程序发送请求以打开链接的 URL(为此,您必须找出扩展程序的 ID 和将其烘焙到其清单中,如下所述:http: //developer.chrome.com/apps/manifest/key.html):

    变种链接 = ...;
    link.addEventListener('click', function(e) {
      e.stopPropagation();
      e.preventDefault();
      chrome.runtime.sendMessage(
        yourExtensionId,{ url:link.href },函数(响应){}
      );
    };
    
  3. 在扩展中,定义一个 chrome.runtime.onMessageExternal(data) 处理程序(它将拦截来自应用程序的 sendMessage() 请求),并在其中使用 chrome.tabs.create() 打开一个新选项卡:

    chrome.runtime.onMessageExternal.addListener(
      功能(请求,发送者,发送响应){
        // 不要忘记确认 |sender| 你是这里的应用程序吗?
        chrome.tabs.create({ url: request.url }, function() {
          // 如果需要在标签页打开时通知应用:
          发送响应(真);
        });
        // 'true' 表示您的响应是异步发送的。
        返回真;
      }
    );
    
于 2013-09-11T05:18:35.097 回答