【问题标题】:Is it possible to have browser open a link in already opened website?是否可以让浏览器在已打开的网站中打开链接?
【发布时间】:2012-05-27 19:20:43
【问题描述】:

我有一个应用程序,其中有选项卡,每个选项卡代表一个特定的子应用程序。

我想让所有链接(例如 site.com/*)在现有的浏览器选项卡中打开,并以某种方式触发一个 JavaScript 事件,表明接收/打开了一个新链接,以便我可以在我的应用程序中打开它.

所以基本上,我正在构建一个 Web 应用程序,我希望在同一个应用程序实例中打开链接,而不是创建我的应用程序的多个实例。

这可能吗?

更新:我说的是如果有人通过 Skype 或电子邮件发送链接,链接将在我的应用程序中打开。我知道大多数网络技术,我想不出任何方法,这就是为什么如果有人可能有想法,我会留下这个问题。或者一个插件,如果没有,有一天我们可能会得到一个,我会添加我自己/更新问题的答案。

【问题讨论】:

    标签: javascript html browser


    【解决方案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,查看您的应用是否已在浏览器中的某个位置打开,然后关闭一个选项卡并聚焦另一个选项卡。

    【讨论】:

    • 更新了问题。抱歉,如果我误导了,我说的是通过 Skype 或电子邮件打开的链接。 :)
    • 您能否详细说明跨文档消息传递的工作方式。我的意思是,window.postMessage() 很简单,但是我怎样才能找到对另一个 window 的引用来与之交谈?如果页面在同一个文档上,但在不同的 iframe 中,这很简单。但是,在我的情况下,电子邮件中的链接打开到一个全新的选项卡,在这种情况下跨文档消息传递如何工作?
    • 哦,你是对的。我不知道有什么方法可以得到那个参考。那我只能想着通过改变cookies/sessionStorage来进行通信,在另一边轮询它们的变化。
    猜你喜欢
    • 2013-10-06
    • 2012-10-16
    • 2016-06-06
    • 2012-02-21
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多