代码之家  ›  专栏  ›  技术社区  ›  thank_K

检测safari并停止脚本

  •  4
  • thank_K  · 技术社区  · 7 年前

    我有一个脚本,由于兼容性问题,我需要为safari(仅限于桌面)停用该脚本。

    脚本必须在正文中,不能在链接中。js文件。

    我试图添加一个if语句,以便修改脚本的“Cburl”,以便在检测到safari并给出错误的url时,脚本不会加载。

    起初的

    <script type="text/javascript">
        var cbuser = { name: '', email: '', message: '' },
            access_token = '3354777755',
            cburl = '//www.domain.com/help/';
            document.write('<script type="text/javascript" src="' + cburl + 'assets/help/js/script.js"></' + 'script>');
    </script>
    

    使用safari检测:

        <script type="text/javascript">
        var safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); //check if safari
        var cbuser = { name: '', email: '', message: '' },
            access_token = '3354777755',
        if(!safari){         
            cburl = '//www.domain.com/nohelp/';
            document.write('<script type="text/javascript" src="' + cburl + 'assets/help/js/script.js"></' + 'script>');
        }
        else {
        cburl = '//www.domain.com/help/';
        document.write('<script type="text/javascript" src="' + cburl + 'assets/help/js/script.js"></' + 'script>');
        }
    </script>
    

    im检测safari的方式有问题吗?

    2 回复  |  直到 7 年前
        1
  •  10
  •   goediaz    7 年前

    我过去经常检查用户是否在使用safari。

    var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
    

    然后可以停止脚本执行以下操作:

    if(isSafari){ 
      alert('Is safari');
      //Do something
    
    } else {
      alert('Is other browser');
      // Do something
    }
    

    这是一个 fiddle 所以你可以玩它。

    下面是针对您的具体案例的一个片段。我改变了 document.write windows.location 为了让它发挥作用。

    var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
    
    if(isSafari) { 
       var cbuser = { name: '', email: '', message: '' };
       var access_token = '7654345676';
       window.location = "https://www.example.com/notSafari";
    } else {
      var cbuser = { name: '', email: '', message: '' };
      var access_token = 'Z2SxfM5dRzKsm3Auhbi4';
      window.location = 'https://www.example.com';
    } 

    只需更改 https://www.example.com 到您的URL。

        2
  •  1
  •   Sandesh Gupta    7 年前

    您可以通过匹配来检查浏览器是否为safari useragent 并初始化变量。使用该变量,可以为其他浏览器运行代码。

    var safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); //check if safari
    
    if(!safari){ 
        // do rest of operation
    }