我正在开发一个Chrome(打包)应用程序,它维护一组书签。这在它自己的小窗口中打开。单击书签会在浏览器中使用目标设置为“_blank”的链接打开它。
在Mac OS X上,这些在Safari中打开。无论如何在Chrome中打开它们?
答案 0 :(得分:0)
当您在打包的应用中点击目标=“_空白”的链接时,Chrome会尊重您选择的默认浏览器,并在外部打开链接,不一定是Chrome。在您的情况下,默认系统浏览器必须是Safari。
在Chrome中打开此类链接的简便方法是将其设置为默认浏览器。
如果您不想这样做,但仍然出于某种原因坚持在Chrome中专门用新标签打开您的链接,这里有一种(也许是唯一的)实现方式:
在应用程序中,为每个链接附加一个onclick处理程序,并使用chrome.runtime.sendMessage()向扩展程序发送请求以打开链接的URL(为此,您必须找出您的扩展程序的ID并将其烘焙到其清单中,如下所述:http://developer.chrome.com/apps/manifest/key.html):
var link = ...; link.addEventListener('click', function(e) { e.stopPropagation(); e.preventDefault(); chrome.runtime.sendMessage( yourExtensionId, { url: link.href }, function(response) {} ); };
在扩展程序中,定义chrome.runtime.onMessageExternal(数据)处理程序(它将拦截来自应用程序的sendMessage()请求),并在那里使用chrome.tabs.create()打开一个新选项卡:
chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { // Don't forget to make sure that |sender| is you app here. chrome.tabs.create({ url: request.url }, function() { // If you need to notify the app when the tab opens: sendResponse(true); }); // 'true' means that your response is sent asynchronously. return true; } );