兼容ie9

2020-06-30  本文已影响0人  jeneen1129

说在前面的话:
新手,项目不知道怎么进行技术选型,直接使用了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........努力拓展,寻找动力,上好马达,加油!

上一篇下一篇

猜你喜欢

热点阅读