当前位置:  开发笔记 > 编程语言 > 正文

检查javascript是否支持URL方案

如何解决《检查javascript是否支持URL方案》经验,为你挑选了5个好方法。

有没有办法检查手机上当前是否注册了URL方案...使用javascript?



1> 小智..:

不是无缝的.但有一种方法类似于检查弹出窗口是否被阻止.

当您尝试不受支持的URL方案时,Safari会警告用户它不知道如何处理它并保持在同一页面上.

因此,如果您给应用程序调用了一些时间来激活,比如300毫秒,然后做一些其他事情来响应该方案的不存在.

这不是最漂亮但它有效:

function startIThrown(){
  document.location = 'ithrown://restart';
  setTimeout(function(){
    if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
      document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
    }
  }, 300);
}

Restart iThrown


@samvermette有一个半复杂的解决方法.如果网址方案有效,请让您的应用向您的服务器发送确认.然后,当您返回应用程序时,让它ping服务器以查看应用程序是否已成功打开.复杂但可行.
如果没有安装应用程序,有没有办法不显示可怕的不友好错误?
值得一试,但这确实是一个令人讨厌的解决方案.即使URL方案在您返回页面时通过,也会调用该函数.因此,无论如何,用户都会收到警报弹出窗口.1或2,取决于他的设备是否支持该方案.

2> 小智..:

这是一个解决方案,当你从应用程序回来时它没有显示弹出窗口,它假设你已经超过400毫秒:

function startiThrown() {
    document.location = appurl;
    var time = (new Date()).getTime();
    setTimeout(function(){
        var now = (new Date()).getTime();

        if((now - time)<400) {
            if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
            document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
            }
         }
    }, 300);
}



3> 小智..:

我发现pagehide事件比依赖系统时间更强大.对于我们这些喜欢非jQuery青睐的人来说,这是片段.

  var appurl = 'custom://url';
  var appstore = 'https://itunes.apple.com/us/app/your-app';

  var timeout;
  function preventPopup() {
    clearTimeout(timeout);
    timeout = null;
    window.removeEventListener('pagehide', preventPopup);
  }
  function startApp() {
    window.location = appurl;
    timeout = setTimeout(function(){
      if(confirm('You do not seem to have the App installed, do you want to go download it now?')){
        document.location = appstore;
      }
    }, 1000);
    window.addEventListener('pagehide', preventPopup);
  }



4> 小智..:

另一个伟大的(至少在最新的浏览器版本中工作)解决方法是在短暂超时后检查浏览器窗口是否具有焦点,这样只有在URI方案不起作用时才能向用户显示对话框

HTML:

URI?

Javascript(在这里使用jQuery):

var windowHasFocus;

$(window).focus(function() {
  windowHasFocus = true;
}).blur(function() {
  windowHasFocus = false;
});

function goToUri(uri) {
  window.location = uri;
  setTimeout(function(){
    if (windowHasFocus) {
      if (confirm('You do not seem to have Qobuz installed, do you want to go download it now?')){
        window.location = 'http://www.qobuz.com';
      }
    }
  }, 100);
}

$('a').on('click', function(){ 
  goToUri($(this).data('uri')); 
});?

这是一个有效的jsFiddle,只需用你自己的URI方案更新它:http: //jsfiddle.net/mF6TZ/


jsfiddle死了

5> eladleb..:

从iOS 6.0开始Apple推出了智能应用程序横幅,它们可以满足我们大多数人的需求:

如果未安装该应用程序,请发送至App Store.

使用app-argument参数打开具有特定深层链接的应用程序.

包含以下元标记:


取自此处: Safari Web内容指南

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有