Safari浏览器的自定义协议检测?

时间:2017-03-30 06:00:27

标签: macos safari

我在javascript中发现了各种方法来检测各种浏览器中的自定义协议,即Chrome,FF,IE和Edge。但是我找不到任何适用于Safari浏览器的东西。任何人都可以帮我解决这个问题吗?

即使看起来如此,这也不是一个重复的问题。所有已知的解决方案都不适合用于MAC的Safari浏览器。我想要这个特殊的解决方案。提前谢谢!

1 个答案:

答案 0 :(得分:0)

https://gist.github.com/rajeshsegu/3716941,您可以找到浏览器检测的要点。尽管它不包含Safari块,但您可以简单地复制Chrome块,它就像一个魅力。

对于懒惰的,这里是函数:

function launchSafari(){

    var url = getUrl(),
        protcolEl = $('#protocol')[0];

    isSupported = false;


    protcolEl.focus();
    protcolEl.onblur = function(){
        isSupported = true;
        console.log("Text Field onblur called");
    };

    //will trigger onblur
    location.href = url;

    //Note: timeout could vary as per the browser version, have a higher value
    setTimeout(function(){
        protcolEl.onblur = null;
        result()
    }, 500);   

}

这就是所谓的地方:

//Handle Click on Launch button
$('#launch').click(function(){
    if($.browser.mozilla){
        launchMozilla();
    }else if($.browser.chrome){
        launchChrome();
    }else if($.browser.msie){
        launchIE();
    }else if($.browser.safari){
        launchSafari();
    }
});
PS:我不是JS专家。也许有人可以改进JS代码