我有一个应用程序,其中我有标签,其中每个标签代表一个特定的子应用程序。
我希望在现有的浏览器标签中打开site.com/*
等所有链接,并以某种方式触发收到/打开新链接的JavaScript事件,以便我可以在我的申请代替。
基本上,我正在构建一个Web应用程序,我希望在同一个应用程序实例中打开链接,而不是创建我的应用程序的多个实例。
这可能吗?
更新:我在谈论是否有人通过Skype或电子邮件发送链接,链接将在我的应用程序中打开。我知道大多数网络技术,我想不出任何方法,这就是为什么我离开这个问题,如果有人可能有一个想法。或者一个插件,如果没有,有一天我们可能得到一个,我会添加我自己的/更新问题的答案。
答案 0 :(得分:1)
是。只需使用链接的target
attribute在子应用程序浏览上下文(即选项卡,窗口)中打开它们。
打开链接时不会触发任何事件。您可以向所有链接添加单击事件处理程序,在URL匹配时执行所需的操作。
如果您希望Web应用程序打开特定协议或mime类型,即使HTML5也是如此。您可以使用window.navigator.registerProtocolHandler()
和window.navigator.registerContentHandler()
。请参阅HTML5 Draft on Custom scheme and content handlers。
如果用户为通过电子邮件等收到的链接打开新的标签/窗口,您通常无法捕获并阻止它。但您可以使用Cross-document messaging,例如window.postMessage
,查看您的应用是否已在浏览器中的某个位置打开,然后关闭一个标签并关注另一个标签。