iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue+iview+webpack中ie浏览器兼容处理的示例分析
  • 757
分享到

Vue+iview+webpack中ie浏览器兼容处理的示例分析

2024-04-02 19:04:59 757人浏览 安东尼
摘要

这篇文章主要介绍Vue+iview+webpack中ie浏览器兼容处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!环境介绍:vue: ^2.5.2iview: ^3.1.

这篇文章主要介绍Vue+iview+webpack中ie浏览器兼容处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

环境介绍:

  • vue: ^2.5.2

  • iview: ^3.1.0

  • WEBpack: ^3.8.1

前情提要:

  • ie 浏览器不支持 es6 Promise 的语法。

  • ie8 及以下对 HTML5 标签不兼容(可以通过引入html5shiv包解决,本文不处理IE11的更低版本,故不提及此法)。

  • ie9 以下 对 css3 的不兼容,各种不兼容的细节比较多,这里不说明。

  • ie10 及以下浏览器中不支持 dataset 方法(经学习实践发现ie11也是不支持的),而我在项目中使用了 iview, iview 的一些组件用到了这个方法。

  • ie 浏览器是非 webkit 内核,不支持 display: -webkit-box; 和相关样式;

  • Polyfill 是 shim 的一种,但他的 api 是遵循标准的。polyfill 的做法通常是:先检查浏览器是否支持某个标准 API,如果不支持,就使用旧的技术对浏览器做兼容处理,这样就可以在旧的浏览器上使用新的标准 API。比如,旧浏览器不支持 ES6 的 Array.prototype.find 方法,我们想要在项目中使用 Array.prototype.find,只要 polyfill 就行了,而不是封装一个新的方法。

处理过程

1、安装 polyfill 组件,使浏览器兼容 es6 的写法

在终端输入命令

npm install --save babel-polyfill

main.js 头部引入 babel-polyfill, 注意这个放最前面:

import 'babel-polyfill'

或者在项目的 webpack.base.conf.js 中配置:

entry: {

  app:['babel-polyfill','./src/main.js']

 },

另外,引入的一些模块需要单独引入到 babel 的配置中,不然不起作用(具体为啥我没深究),网上查到用到 echarts-v3 的需要配置,经测试我用到 iview 也是要配置的, 下面代码的 include 中就是我配置的项,这个主要是按需配置的,具体看项目里的情况:

module: {

  rules: [

   ...(config.dev.useEslint ? [createLintingRule()] : []),

   {

    test: /\.vue$/,

    loader: 'vue-loader',

    options: vueLoaderConfig

   },

   {

    test: /\.js$/,

    loader: 'babel-loader',

    include: [

     resolve('src'), 

     resolve('test'), 

     resolve('static'),

     resolve('node_modules/webpack-dev-server/client'),

     // resolve('node_modules/vue-echarts'),

     resolve('node_modules/iview/src'),

     // resolve('node_modules/resize-detector')

    ]
   },
}

2、兼容 dataset

我在引入了 babel-polyfill 后还是报错,信息如下图:

Vue+iview+webpack中ie浏览器兼容处理的示例分析

搜了半天关于 SCRIPT1003 和 SCRIPT5007 的错误, 发现没有直接的解决办法,就主要是说缺少项目中包含的某个模块的某种方法的引入。于是我就从我主要用到的 iview 入手去查找,发现了有相关的内容。有说到 iview 兼容 IE 需要写一个 dataset 方法才能正常加载。

dataset方法只要能够加载全局使用即可。我是写了一个脚本嵌入 index.html 文件中。代码如下:

<script>
 // dataset 方法兼容 IE 浏览器。ie10及以下不支持dataset
 if (window.HTMLElement) {
  if (Object.getOwnPropertyNames(HTMLElement.prototype).indexOf('dataset') === -1) {
   Object.defineProperty(HTMLElement.prototype, 'dataset', {
    get: function () {
     var attributes = this.attributes // 获取节点的所有属性
     var name = []
     var value = [] // 定义两个数组保存属性名和属性值
     var obj = {} // 定义一个空对象
     for (var i = 0; i < attributes.length; i++) { // 遍历节点的所有属性
      if (attributes[i].nodeName.slice(0, 5) === 'data-') { // 如果属性名的前面5个字符符合"data-"
       // 取出属性名的"data-"的后面的字符串放入name数组中
       name.push(attributes[i].nodeName.slice(5));
       // 取出对应的属性值放入value数组中
       value.push(attributes[i].nodeValue);
      }
     }
     for (var j = 0; j < name.length; j++) { // 遍历name和value数组
      obj[name[j]] = value[j]; // 将属性名和属性值保存到obj中
     }
     return obj // 返回对象
    }
   })
  }
 }
</script>

搞到这里,我的项目就已经可以在 IE 里出现了,也不打算继续支持更低的IE版本,坑太深,果断弃。但是样式还是有问题。这个搞起来也是很麻烦。点了点项目里出现的样式问题,未发现很复杂的,主要一个就是 flex 布局出现混乱,经过调整已经好了。还有就是 -webkit-box 不支持,之前显示数据使用以下方式解决多行溢出省略号显示问题失效了:
overflow: hidden;

display: -webkit-box; 

-webkit-box-orient: vertical;

-webkit-line-clamp: 2;

Word-break: break-all;

纠结了一下,不想用js 的方式写,也不想用 伪标签(高度不好定,易出现文字被覆盖的情况),也不想特意让后台修改返回的数据,所以决定用比较low的相对保险的截取字符的方式展示。

以上是“Vue+iview+webpack中ie浏览器兼容处理的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: Vue+iview+webpack中ie浏览器兼容处理的示例分析

本文链接: https://www.lsjlt.com/news/79380.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+iview+webpack中ie浏览器兼容处理的示例分析
    这篇文章主要介绍Vue+iview+webpack中ie浏览器兼容处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!环境介绍:vue: ^2.5.2iview: ^3.1....
    99+
    2024-04-02
  • Vue中iview IE浏览器不兼容报错怎么办
    这篇文章给大家分享的是有关Vue中iview IE浏览器不兼容报错怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于Iview编译使用到了es6的一些新特性,Interne...
    99+
    2024-04-02
  • 浏览器中兼容性的示例分析
    小编给大家分享一下浏览器中兼容性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!浏览器就是2大派系,一个是其他浏览器,一...
    99+
    2024-04-02
  • CSS3浏览器兼容的示例分析
    这篇文章给大家分享的是有关CSS3浏览器兼容的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、浏览器兼容1.1、概要世界上没有任何一个浏览器是一样的,同样的代码在不一样...
    99+
    2024-04-02
  • CSS多浏览器兼容的示例分析
    本篇文章给大家分享的是有关CSS多浏览器兼容的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1、DOC...
    99+
    2024-04-02
  • CSS浏览器兼容问题的示例分析
    这篇文章主要介绍了CSS浏览器兼容问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 CSS对阅读器的兼容性偶然让人很头疼,大约...
    99+
    2024-04-02
  • CSS浏览器兼容性Hack的示例分析
    这篇文章给大家分享的是有关CSS浏览器兼容性Hack的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。IE6/7实现display:inline-block有两种方法,第一...
    99+
    2024-04-02
  • webpack如何处理css浏览器兼容性问题
    今天小编给大家分享一下webpack如何处理css浏览器兼容性问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面...
    99+
    2024-04-02
  • vue项目兼容IE浏览器的教程步骤
    目录前言 :进入正题:总结前言 : 网上 找了很多关于 vue项目兼容 IE 浏览器的 教程步骤 , 写的 非常详细 , 但根据我自己的项目,怎么找 都没有找到 webpack.ba...
    99+
    2023-05-13
    vue兼容ie浏览器解决方案 vue对ie兼容性 vue怎么兼容浏览器
  • IE浏览器中ajax缓存机制的示例分析
    小编给大家分享一下IE浏览器中ajax缓存机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下...
    99+
    2024-04-02
  • Base64图片编码解析及在各种浏览器兼容性处理的示例分析
    小编给大家分享一下Base64图片编码解析及在各种浏览器兼容性处理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!IE浏...
    99+
    2024-04-02
  • javascript开发之网页兼容各种浏览器的示例分析
    这篇文章主要为大家展示了“javascript开发之网页兼容各种浏览器的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript开发之网页兼容...
    99+
    2024-04-02
  • 常见css属性进行浏览器兼容性的示例分析
    这篇文章给大家分享的是有关常见css属性进行浏览器兼容性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css3.jpeg其实,在实际的开发过程中,我们对常见的css属性...
    99+
    2024-04-02
  • js中DOM2兼容处理this的示例分析
    这篇文章主要介绍js中DOM2兼容处理this的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!DOM2级存在的兼容问题,这里先说一下this的问题。 function&nbs...
    99+
    2024-04-02
  • 浏览器内核及兼容的问题实例分析
    这篇文章主要介绍了浏览器内核及兼容的问题实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇浏览器内核及兼容的问题实例分析文章都会有所收获,下面我们一起来看看吧。   一、...
    99+
    2024-04-02
  • IE和Firefox中Javascript兼容性问题的示例分析
    这篇文章主要介绍了IE和Firefox中Javascript兼容性问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。由于长久以来J...
    99+
    2024-04-02
  • PHP Session 跨域与浏览器兼容性的兼容处理
    随着互联网的发展,跨域访问已经成为一个常见的需求。然而,由于浏览器的同源策略限制,导致在跨域访问时出现了一些问题。其中,与浏览器的兼容性和 PHP Session 的跨域问题是开发中常遇到的难题。本文将介绍如何处理这些问题,并提供具体的代码...
    99+
    2023-10-21
    PHP 跨域 兼容处理
  • 使用不同CSS样式兼容多种浏览器的示例分析
    今天就跟大家聊聊有关使用不同CSS样式兼容多种浏览器的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。浏览器兼容问题一直是大家比较关注的,这里...
    99+
    2024-04-02
  • border-radius IE8兼容处理的示例分析
    这篇文章将为大家详细讲解有关border-radius IE8兼容处理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据canisue(http://caniu...
    99+
    2024-04-02
  • bootstrap和IE8兼容性处理的示例分析
    这篇文章主要介绍了bootstrap和IE8兼容性处理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。bootstrap IE8 兼...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作