系统兼容IE浏览器问题以及解决方案

问题

vue项目在IE浏览器上运行时会出现兼容性问题:JavaScript语法报错,css样式错乱。原因是在IE(以IE11为例)浏览器下,部分js的写法需要改变,部分样式在IE浏览器上不支持,以及一些IE浏览器特有的问题。

  1. vue 只兼容ie8以上版本;

  2. IE 不兼容 axios的promiss对象;

  3. IE 不兼容es6语法;

解决方案

下载对应插件包解决js兼容性问题:babel-polyfill,es6-promise以及 babel-plugin-transform-es2015-modules-commonjs

一、关于babel-polyfill

1、说明:This will emulate a full ES2015+ environment and is intended to be used in an application rather than a library/tool. This polyfill is automatically loaded when using babel-node.(模拟ES2015以上的环境,主要用于对ES6新语法不支持的浏览器);

2、安装:npm install --save babel-polyfill;

3、配置:module.exports = { entry: [“babel-polyfill”, “./src/main.js”] };

4、main.js中配置:import ‘babel-polyfill’ //放在最顶部,确保全面加载

二、关于es6-promise

1、说明:若在项目中使用了ES6 promise对象,它在Chrome、Safari浏览器下可以正常运行,但在360兼容模式、IE内核中不支持;

2、安装:npm install es6-promise;

3、配置:在main.js中加入require(‘es6-promise’).polyfill(),用于在node或浏览器中支持ES6 与CommonJS。

因为项目中require和import混用的原因,在做了IE兼容之后打包会出现问题,会报以下错误:

Cannot assign to read only property 'exports' of object '#<Object>'

此时就需要安装babel-plugin-transform-es2015-modules-commonjs插件来解决报错

先安装:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

然后再 .babelrc 中添加该插件

 "plugins": ["transform-es2015-modules-commonjs"]

安装完以上插件之后,还需要做相关配置的修改,具体操作如下:

vue.config.js文件chainWebpack方法中添加

config.entry.app = ["babel-polyfill", "./src/main.js"];
config.module.rule('compile').test(/\.js$/).include.add(resolve('src')).add(resolve('test')).add(resolve('node_modules/webpack-dev-server/client')).add(resolve('node_modules')).end().use('babel').loader('babel-loader').options({presets: [['@babel/preset-env', {modules: false}]]});

babel.config.js中对应修改,添加sourceType和useBuiltIns:

module.exports = {presets: [// '@vue/cli-plugin-babel/preset', //文件原始内容['@vue/app', {useBuiltIns: 'entry',             //添加的内容}]],sourceType: 'unambiguous'
}

main.js中代码顶部加入对应引用:

import 'babel-polyfill'
import Es6Promise from 'es6-promise'
require('es6-promise').polyfill()
Es6Promise.polyfill()Plain Text

以上就是处理IE浏览器js兼容问题,至于css样式兼容,则需要对应修改对应文件样式,在IE浏览和chrome浏览器上分别测试,两边都适配才可以。

vue项目系统兼容IE浏览器问题以及解决方案相关推荐

  1. Vue项目不兼容IE浏览器问题

    非常简单,只需要两步就能解决: 1. 安装插件babel-polyfill npm install --save-dev babel-polyfill 2.在你的VUE项目的src目录下找到main. ...

  2. vue项目运行自动打开浏览器,默认设置为google浏览器的方法

    vue项目运行自动打开浏览器,默认设置为google浏览器. 设置方法就是把google浏览器设置为电脑默认浏览器,具体如下:

  3. Vue 项目部署出现css样式失效的解决方案

    Vue 项目部署出现css样式失效的解决方案 参考文章: (1)Vue 项目部署出现css样式失效的解决方案 (2)https://www.cnblogs.com/Desmondexperience/ ...

  4. 从 ie10浏览器下Symbol 未定义的问题 探索vue项目如何兼容ie低版本浏览器(ie9, ie10, ie 11 )

    1. 问题:      vue项目在ie11下一片空白并报Symbol 未定义的错 原因:      ie10浏览器解析不了es6的语法,需要我们使用babel(Babel是一种工具链,主要用于将EC ...

  5. vue项目无法在IE浏览器中显示

    网上找了很多资料,都说是babel-polyfill包的问题,按照他们的方法,我发现无法解决,之于这些坑,总结了我的解决方法. 拿到一个vue项目首先要安装对应的插件, npm install 安装过 ...

  6. Vue 项目启动后在浏览器自动打开

    想要实现 Vue 项目在浏览器自动打开,只需要几步简单的操作就可以实现了.我这里是使用了Vue3.x的脚手架创建的项目,项目的目录架构你们有可能是和你们的不太一样,但是道理是这样子的道理.其他话不多说 ...

  7. pdf预览引发的vue项目只允许Chrome浏览器访问

    前言: 项目中需要把原本下载pdf功能改成在线预览,只能预览不能进行其他操作,通过在地址后面拼接参数可以隐藏掉工具栏,但是只对chrome生效,所以又增加了访问权限,只对chrome浏览器开放,记录一 ...

  8. vue项目PC兼容移动端

    做完的pc项目要求兼容移动端,常规操作的话是新做一个webapp后再来回跳转, 当前pc项目没有太多的交互和复杂的页面,所以决定在一个项目里进行兼容适配 1.新建两个组件,pc端页面组件,m端页面组件 ...

  9. vue项目首屏加载过慢解决方案

    前言 因为我的一个vue项目首页打开加载了好久,所以决定优化一下.发现是打包体积太大了,页面才加载慢主要是第三方库. 优化着优化着就想要更好一点,于是逛博客搜索,参照了几个博主的解决方法整理出一下几点 ...

最新文章

  1. consul安装配置使用
  2. perl 字符串删除末尾几个字符_Perl字符串处理函数大全
  3. ORA-01502: index ‘index_name' or partition of such index is in unusable state
  4. Python学习之猜数字小游戏
  5. java爬虫下载付费html网页模板
  6. matlab 三角形隶属函数,在MATLAB模糊逻辑工具箱中,常用的隶属函数有:
  7. python多版本控制操作方法
  8. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法
  9. MySQL_存储引擎
  10. Protobuf import文件导入其他proto
  11. python文件系统监控_简单了解Python下用于监视文件系统的pyinotify包
  12. conda环境转移复制和pip包的转移复制以及替换成清华源channels,pip的阿里源
  13. HDU 6074 - Phone Call | 2017 Multi-University Training Contest 4
  14. [直观学习排序算法] 视觉直观感受若干常用排序算法
  15. C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
  16. FPN网络详解(知识点记录)
  17. tracert命令查询服务器位置,服务器管理中tracert命令常用原理和命令行详解
  18. 利用selenium 实现对百度图片搜索中的图片的抓取
  19. 吃什么食物对眼睛最好
  20. 运营商线路细分_电信运营商如何进行客户细分

热门文章

  1. 牛客题目 - 白色相簿(并查集)
  2. WPF 最简单的TextBox水印
  3. 顿号、分号;这些标点符号的用法
  4. 传感网与物联网的区别,这二者之间的具体区别到底是什么?
  5. linux 字符串数组初始化,Linux命令行 – 数组
  6. 邮件常见异常:javax.mail.MessagingException: Could not connect to SMTP host
  7. 你为什么选择计算机这个专业英语,英文作文:为什么选择计算机作为你的专业...
  8. [Linux] date命令
  9. MySQL 日期字符串转换
  10. 【shell】shell-判断两个ip是否在同一个网段