Vue2.0在IE11版本浏览器中的兼容性问题

作者:pinbolei 时间:2024-04-29 13:08:55 

用vue2.0开发做兼容时,你可能会发现vue项目在IE11版本浏览器中是空白的。。。

看到空白的页面你可能会懵几秒钟,没事,下面我们就来解决这个问题~

让IE11支持vue2.0

首先用npm 安 * abel-polyfill

npm install --save-dev babel-polyfill 

然后在webpack.base.conf.js 文件中修改 module.exports 中的entry,添加 babel-polyfill:

修改前

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: './src/main.js'
  },
  ...

修改后

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: ['babel-polyfill', './src/main.js']
  },
  ...

然后再main.js中引入:

import 'babel-polyfill'

完成上述一系列操作之后,在IE11浏览器中重新跑下项目,你就会发现,你辛苦做的页面出现了!

但是页面有可能还会没有出现!!!,这时首先查看控制台,看看是否报错,根据报错情况查找原因。在这说再一个特别的原因,static下的js文件中用了ES6的语法,针对这个问题,解决方法如下:

在webpack.base.conf.js文件中添加resolve('static')

修改前:

module: {
  rules: {
      ...
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
      },
      ...
  }
}

修改后:

module: {
  rules: {
      ...
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'), resolve('static'), resolve('node_modules/webpack-dev-server/client')]
      },
      ...
  }
}

但是如果你的项目中有router-link标签的话,点击一下你会发现,嗯,又出问题了,路由无法跳转,这是千万不要荒,稳住,下面解决这个问题。

IE11上router-link无法跳转,主要是因为当url的hash change的时候,浏览器没有做出相应。

这时候需要做一个兼容,当浏览器是IE11时手动给url加一个hashChange事件

下面是在网上找的两种方法

第一种

new Vue({
  el: '#app',
  router,
  store,
  template: '<Layout/>',
  components: { Layout },
  render: function (createElement) {
    if ('-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style) {
      window.addEventListener('hashchange', () => {
        var currentPath = window.location.hash.slice(1)
        if (this.$route.path !== currentPath) {
          this.$router.push(currentPath)
        }
      }, false)
    }
    return createElement(Layout);
  }
})

第二种

直接添加在 main.js 入口文件的最后即可

if (
  '-ms-scroll-limit' in document.documentElement.style && 
  '-ms-ime-align' in document.documentElement.style
) { // detect it's IE11
  window.addEventListener("hashchange", function(event) {
    var currentPath = window.location.hash.slice(1);
    if (store.state.route.path !== currentPath) {
      router.push(currentPath)
    }
  }, false)
}

来源:https://blog.csdn.net/pinbolei/article/details/90291589

标签:Vue2,IE11,浏览器,兼容性
0
投稿

猜你喜欢

  • [翻译]网页设计中的模式窗口

    2009-05-29 18:00:00
  • python使用matplotlib画饼状图

    2023-04-06 12:23:29
  • java使用dbcp2数据库连接池

    2024-01-29 05:33:42
  • 貌似很强的mysql备份策略分享

    2024-01-27 18:37:03
  • python散点图实例之随机漫步

    2021-01-19 21:05:58
  • python获取外网IP并发邮件的实现方法

    2023-01-07 13:55:33
  • 使用 Python 遍历目录树的方法

    2021-09-21 22:19:32
  • python基于openpyxl生成excel文件

    2022-08-03 03:10:47
  • Django使用Channels实现WebSocket的方法

    2023-12-10 16:20:05
  • python函数指定默认值的实例讲解

    2021-07-20 14:05:01
  • vue使用el-upload上传文件及Feign服务间传递文件的方法

    2024-04-28 10:54:45
  • 如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱

    2022-07-03 20:51:47
  • MySQL中易被我们忽略的细节

    2024-01-21 09:54:48
  • Mysql错误1366 - Incorrect integer value解决方法

    2024-01-13 03:21:35
  • python tkinter的消息框模块(messagebox,simpledialog)

    2022-12-30 15:19:23
  • 弄清Pytorch显存的分配机制

    2023-05-22 22:12:44
  • Javascript优化技巧(文件瘦身篇)

    2024-04-22 13:04:16
  • 解决python多行注释引发缩进错误的问题

    2022-02-08 04:19:53
  • Git 教程之创建仓库详解

    2023-07-08 08:18:04
  • Javascript HTML5 Canvas实现的一个画板

    2024-04-10 10:39:36
  • asp之家 网络编程 m.aspxhome.com