【问题标题】:Detecting URI scheme support in-browser在浏览器中检测 URI 方案支持
【发布时间】:2016-02-23 09:43:18
【问题描述】:

是否有类似 Modernizr 的方法来检测客户端对 uri 方案的支持,例如 <a href="sms:1-408-555-1212">New SMS Message</a> 或者 <a href="whatsapp://send?text=Foo">New WhatsApp Message</a> 为了有条件地显示这些链接?

可能相关

Check if URL scheme is supported in javascript

Is there something similar to iOS's canOpenURL to check URL schemes for mobile browsers?

【问题讨论】:

    标签: html browser modernizr feature-detection uri-scheme


    【解决方案1】:

    您可以使用一些技巧,但如果您必须在 Windows 8 之前的 Windows 上处理 IE

    通常,如果跟随这些 URL 有副作用,则无法检测对 URL 方案的支持。

    您可以尝试在 iframe 中打开这些网址之一。因此,您可以将 iframe 附加到正文(或任何您想要的位置),然后将其 href 设置为特殊 url。

    在 Mozilla 浏览器中,如果 URL 方案不受支持,您将收到异常。在基于 Webkit 的浏览器(和 Chrome)中,什么都不会发生。

    因此,除非您使用 Mozilla,否则甚至无法确定您所做的工作是否奏效。

    在 Windows 8 和更高版本下的 IE11 中(但不是在早期版本的 Windows 下 - 只是缺少该方法),您可以使用 window.natigator.msLaunchUri 启动该特殊 url。如果不支持 URI 方案,这也会抛出。

    不幸的是,这可能真的会阻碍您想要做的事情:无论您使用什么技巧:如果它不支持该方案并且您尝试在任何不支持 @987654322 的 IE 版本上启动它@,您的页面将被错误页面替换,没有办法阻止这种情况发生。

    我什么都试过了。 iframe 技巧会导致错误消息。尝试window.open 会导致错误消息或不执行任何操作,具体取决于天气。设置 img URL 不会导致错误(好),但也不会导致 URL 实际启动(坏)。

    除非你与你要启动的应用程序的 url 合作(例如,如果安装了应用程序,通过告诉 IE 污染 User-Agent 标头),你在 IE 中运气不好。

    是的 - 很可能不是您想听到的,对不起。

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2012-02-02
      • 2011-06-05
      • 2017-10-10
      相关资源
      最近更新 更多