• 利用好@cc_on,对付低端的浏览器


    <script>/*@cc_on window.location.href="http://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/</script>

    起因: 做前端开发,为了对付低端的浏览器,而W3C标准浏览器会直接把这些代码当作注释,


    大家都愿意这样分: 低级浏览器和高级浏览器
    当然有很多办法可以区分: UA、属性检测等等...
    除了这个以外也可以使用微软提供的 @cc_on 这个诡异的语法
    参考: https://msdn.microsoft.com/library/8ka90k2e

    Internet Explorer条件编译英文名叫Internet Explorer Javascript conditional compilation,IE的javascript又叫JScript,所以又叫Internet Explorer JScript conditional compilation,它和IE的条件注释(Internet Explorer conditional comments)类似,只是条件注释是HTML注释,无法在JS代码中使用。

    Internet Explorer条件编译语法就是在javascript注释开始标签后面加一个@符号,在js注释结束标签前面加一个@,在/*@和@*/之间的代码就是条件编译代码,W3C标准浏览器会直接把这些代码当作注释,所有版本的IE包括IE11都能够识别并且执行条件编译代码,需要注意的是,Internet Explorer 11 标准模式和Windows 8.x起应用商店应用已经移除对条件编译的支持,IE 11兼容模式使用的是IE 7内核,也可以在在“F12开发人员工具中”指定为其他低于11的版本来支持条件编译。

    想要让条件编译生效,需要加一条cc_on指令开启条件编译,cc就是conditional compilation的英文缩写,cc_on就是打开条件编译。指令必须放在条件编译注释中,写成/*@cc_on@*/,否则会导致W3C标准浏览器报错。

    使用条件编译可以靠谱地检测浏览器是否是Internet Explorer,还可以通过条件编译变量_jscript_version取得IE版本号,比navigator.userAgent靠谱多了,因为user agent是可以任意修改的。

    条件编译变量
    @_win32是否是Win32应用
    @_win16是否是Win16应用 现代应用没有16位的了
    @_mac是否在苹果系统上运行
    @_alpha 处理器是否是DEC Alpha
    @_x86 处理器是否是Intel
    @_mc680x0 处理器是否是Motorola 680x0
    @_PowerPC 处理器是否是Motorola PowerPC
    @_jscript 值为true
    @_jscript_build Javascript生成号 形如18698(IE10中的值)
    @_jscript_version javascript javascript版本号 IE11中值为11, IE10中值为10, IE 9中值为9, IE8中为值5.8, IE 7中值为5.7, IE6中值为5.6或5.7.

    条件编译中还可以使用@if @elif @end进行条件判断,其中elif是else if的意思,还可以使用@set声明变量,格式为@set @varname = 'wuxiancheng';

    以下代码使用条件编译识别IE浏览器

    <script>
            /* IE条件编译检测浏览器是否是IE并且取得IE版本号
             * 不使用navigator.userAgent获取IE版本号避免误判
             * @author 吴先成 wuxiancheng.cn 51-n.com ohcc@163.com
            */
            var IEVersion = 0;
            /*@cc_on@*/
            /*@
                    IEVersion = @_jscript_version;
            @*/
            if(IEVersion > 0){
                    if(IEVersion < 11){
                            alert('IE 11已经发布多年,不要再用祖传的IE' + IEVersion + '了!');
                    }
            }else{
                    alert('当前浏览器不是IE内核浏览器。');
            }
    </script>
  • 相关阅读:
    linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql解决方案
    数组-(Zero Sum Subarray)返回数组中和为某个数的子串数组
    hash、hashlib使用
    优先队列
    Jensen 不等式
    ML-集成学习:AdaBoost、Bagging、随机森林、Stacking(mlxtend)、GBDT、XGBoost、LightGBM、CatBoost原理推导及实现
    scipy.optimize优化器的各种使用
    RL-马尔科夫决策过程(MDP)-原理及实现
    ML-sklearn参数随机优化:GridSearchCV、RandomizedSearchCV、hyperopt
    5.matplotlib绘制-meshgrid区域图-可视化ML
  • 原文地址:https://www.cnblogs.com/caitangbutian/p/11575745.html
Copyright © 2020-2023  润新知