宝哥软件园

Vue iview webpack ie浏览器兼容简单处理

编辑:宝哥软件园 来源:互联网 时间:2021-08-20

环境介绍:

vue : 2 . 5 . 2 iview : 3 . 1 . 0 web pack : 3 . 8 . 1前情提要:

Ie浏览器不支持ES6 Promise的语法。Ie8及以下版本与html5标签不兼容(可通过引入html5shiv包解决。本文不涉及IE11的较低版本,因此不提及此方法)。下面的ie9与CSS3不兼容,不兼容的细节有很多,这里就不解释了。ie10及以下浏览器不支持dataset方法(发现ie11不支持),但我在项目中使用了iView,iView的部分组件使用了这种方法。Ie浏览器是非webkit内核,不支持display: -webkit-box。以及相关风格;Polyfill是一种垫片,但其API遵循标准。Polyfill通常会检查浏览器是否支持某个标准API,如果不支持,则使用旧技术使浏览器兼容,这样就可以在旧浏览器上使用新的标准API。例如,旧浏览器不支持ES6的Array.prototype.find方法,所以我们想在我们的项目中使用Array.prototype.find,只是polyfill,而不是封装一个新的方法。处理过程

1.安装polyfill组件,使浏览器与es6编写兼容

在终端输入命令

NPM install-save babel-poly ill main . js表头引入了babel-poly ill,前面要注意这一点:

导入' babel-polyfill '或在项目的webpack.base.conf.js中进行配置:

entry : { app :[' babel-poly fill ','。/src/main.js']},此外,一些引入的模块需要单独引入到babel的配置中,否则将无法工作(具体来说,为什么我没有深究)。我发现需要在网上配置echart-v3,经过测试,我也需要配置iview。

module : { rule 3360[.(config . dev . uselesint?[createLintingRule()] : []),{ test: /。vue$/,loader: 'vue-loader ',options: vueLoaderConfig },{ test: /。js$/,loader: 'babel-loader ',包括: [ resolve('src ')、resolve('test ')、resolve('static ')、Resolve(' node _ modules/web pack-dev-server/client ')、//resolve ('node _ modules/vue-e图表')、Resolve(' node _ modules/iview/src ')、//resolve ('node _ modules/resi

我在介绍了babel-polyfill之后还是报告了一个错误,信息如下:

搜索了很久关于SCRIPT1003和SCRIPT5007的错误,发现没有直接的解决方法,主要是缺少对项目中包含的某个模块的某个方法的介绍。于是我从我主要使用的iview入手,找到了相关内容。据说iview兼容IE需要写一个数据集方法才能正常加载。

可以加载数据集方法以供全局使用。我写了一个脚本,并将其嵌入到index.html文件中。代码如下:

Script //dataset方法与IE浏览器兼容。在ie10及更低版本中,数据集if(window . htmlelement){ if(object . getowntpropertynames(htmlelement . prototype))。不支持index of(' dataset ')===-1){ object . defineperoperty(HTMlelement . prototype,' dataset ',{ get : function(){ varattributes=this。attributes//获取节点的所有属性var name=[] var value=[] //定义两个数组保存属性名称和属性值var obj={} //为(var I=0;一.属性.长度;I) {//遍历节点的所有属性if(属性[I]。nodename。slice (0,5)==' data-'){//如果属性名的前5个字符满足' data-' //取出属性名的' data-'后面的字符串,放入name数组名中。push(attribute//)取出对应的属性值,放入值数组中。推送(属性[I]。node value);} } for(var j=0;j .名称.长度;J) {//遍历名称和值数组obj[name[j]]=value[j];//将属性名称和属性值保存在obj } return obj//return object } })}/脚本中,我的项目已经可以出现在IE中了,不打算继续支持较低的IE版本。这个坑太深了,我应该果断抛弃它。但是风格还是有问题。这也很麻烦。我点击了项目中的风格问题,但没有发现复杂的问题。主要是flex布局混乱,调整后已经固化。另外,-webkit-box不支持,采用以下方法解决多行溢出省略号显示问题:overflow:隐藏;

display :-web kit-box;/* Chrome 4、Safari 3.1、iOS Safari 3.2 */-WebKit-box-oriented :垂直;-web kit-line-clamp : 2;word-break : break-all;稍微挣扎了一下,不想用js写,也不想用假标签(高度不确定,文字容易被覆盖),也不想后台特意修改返回的数据,所以决定用比较低,比较安全的截取字符的方式展示。

摘要

这是第一次处理这个问题。很多东西不清楚,描述不清楚,处理不全面。希望多交流指正!

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+