我正在开发一个维护一组书签的 Chrome(打包)应用程序。这将在其自己的小窗口中打开。单击书签在浏览器中使用目标设置为“_blank”的链接将其打开。
在 Mac OS X 上,这些在 Safari 中打开。反正有没有让它们在 Chrome 中打开?
我正在开发一个维护一组书签的 Chrome(打包)应用程序。这将在其自己的小窗口中打开。单击书签在浏览器中使用目标设置为“_blank”的链接将其打开。
在 Mac OS X 上,这些在 Safari 中打开。反正有没有让它们在 Chrome 中打开?
当您在打包的应用程序中单击带有 target="_blank" 的链接时,Chrome 会尊重您选择的默认浏览器并在外部打开链接,无论它是什么,不一定是 Chrome。在您的情况下,默认系统浏览器必须是 Safari。
在 Chrome 中打开此类链接的简单方法是将其设为默认浏览器。
如果您不想这样做,但由于某种原因仍然坚持要在 Chrome 中的新标签页中打开您的链接,这是实现此目的的一种(也许是唯一的)方法:
在应用程序中,将 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 },函数(响应){} ); };
在扩展中,定义一个 chrome.runtime.onMessageExternal(data) 处理程序(它将拦截来自应用程序的 sendMessage() 请求),并在其中使用 chrome.tabs.create() 打开一个新选项卡:
chrome.runtime.onMessageExternal.addListener( 功能(请求,发送者,发送响应){ // 不要忘记确认 |sender| 你是这里的应用程序吗? chrome.tabs.create({ url: request.url }, function() { // 如果需要在标签页打开时通知应用: 发送响应(真); }); // 'true' 表示您的响应是异步发送的。 返回真; } );