兼容ie9

作者: jeneen1129 | 来源:发表于2020-06-30 13:54 被阅读0次

    说在前面的话:
    新手,项目不知道怎么进行技术选型,直接使用了html+css+js,
    外加bootstrap,layui库,jquery,与后端使用ajax,
    首页由另一位前端进行编写,使用vue.min.js,外加axios.min.js
    由于最近需要进行兼容性测试,主要测试ie9+和360,

    360可以直接使用下面语句指定使用chrome内核

    <meta name="renderer" content="webkit">
    

    ie下该项目主要不可兼容的地方有以下几点:

    ie工具控制台错误消息

    1. css中 使用id或者class类型设置content属性无效,图如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            body {
                background-color: black;
                color: white;
            }
    
            img:hover {
                content: url('./icon-平台入口-蓝.png');
                background-color: white;
            }
    
            li::before {
                content: url('./icon-平台入口-白.png');
            }
    
            .before {
                content: url('./icon-平台入口-白.png');
            }
    
            #img1 {
                content: url('./icon-平台入口-白.png');
            }
        </style>
    </head>
    
    <body>
        <img src="./icon-平台入口-白.png">
        <img src="./icon-平台入口-蓝.png" class="before">
        <img src="#" class="before">
        <img src="#" id="img1">
        <li>li::before属性设置content</li>
        <li class="before">用class设置content</li>
    </body>
    
    </html>
    
    ie中id和class属性设置content属性

    解决方法:

    绑定status来改变img的src属性


    使用vue数据绑定status

    2.使用video.js来播放,ie下报错

    图中可知找不到Unit8Array


    报错

    解决方法:

    Uint8Array ie9及以下兼容问题
    polyfill
    shim和polyfill有什么区别

    摘:(再次理解polyfill的概念)
    一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现 一个polyfill就是一个用在浏览器API上的shim。
    我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了。

    3.css 中filter属性来改变图片的颜色,ie不支持filter

    解决办法同1

    4.css 中flex布局支持ie10+,ie9下不支持

    解决方案:

    在原来的基础上叠加,由于flex布局使用之后float等失效 >>>>>
    利用float浮动来叠加,margin: 0 auto来代替,text-align: center设置文本居中,position设置相对定位来设置元素的布局(用于一行3列的排布),

    另外,其实可以使用bootstrap或者element-ui的流式布局(栅格化)来重新实现。等很多方式。

    5.在ie9中省略号的设置

    单行-设置通用:

        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
    

    多行-没有找到很好的办法:

       /* 统一字体的高度和行高,以及宽度,超出则隐藏,从而保证显示效果一致 */
      height: 2rem;
      line-height: 2rem;
      width: 100%;
      overflow: hidden;
    

    6. ie9中li标签的默认list-style:disc的点显示不出来

    显示样式问题
    /* 兼容ie,li标签设置 */  
    list-style-position: inside;
    

    7.html引入vue,兼容ie

    跳转

    如果代码是es6规范编写,需要使用babel来引入,
    或者在https://www.babeljs.cn/repl转换成es5

    8.ie下通过url中文路径传参的问题

    需要使用encodeURI转换

    window.open('./videoshowDetails.html?id=' + String(data.guid) + '&name=' + encodeURI(data.title) + ','_self')
    

    ps>新手一枚的痛,

    1.在项目中需要考虑ajax请求路径以及图片路径,这些参数基本都有一个全局的请求头,需要共享,
    另外可以对一些cookie存取、localstorage存取、路径传参、ajax请求、字符串处理(当前的时间格式化)等函数进行模块化编写,下次可以直接引入使用
    2.相似页面的搭建,可以使用组件来(简单可以使用jQuery的load函数拼装,复杂的...暂时不够清楚),

         <div id="my-header">
        </div>
        <script>
        /*jquery引入组件header*/
        $('#my-header').load('../header.html', function () {})
        </script>
    

    3.css可以进行一些全局的封装,考虑好封装性和复用的便利,可以设置一些没有语义的class,最近第一次知道css其实可以自定义变量
    换肤的小测试方法探索

    /*css*/
    :root {
        --hover-color: skyblue;
    }
    
    .layui-layout-admin .layui-logo {
        color: var(--hover-color);
    }
    // javascript
    let root = document.documentElement;
    root.style.setProperty('--hover-color', 'red');
    

    可以多学习less、sass、stylus
    等等,可以帮助快速编写,非常有利于开发的规范性,提升开发的效率和质量

    即主要思考模块化和组件化(html, css, js),方便复用

    4........努力拓展,寻找动力,上好马达,加油!

    相关文章

      网友评论

          本文标题:兼容ie9

          本文链接:https://www.haomeiwen.com/subject/vkgtqktx.html