Vue2.0在IE11版本瀏覽器中的兼容性問題
用vue2.0開發(fā)做兼容時,你可能會發(fā)現(xiàn)vue項目在IE11版本瀏覽器中是空白的。。。
看到空白的頁面你可能會懵幾秒鐘,沒事,下面我們就來解決這個問題~
讓IE11支持vue2.0
首先用npm 安裝babel-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瀏覽器中重新跑下項目,你就會發(fā)現(xiàn),你辛苦做的頁面出現(xiàn)了!
但是頁面有可能還會沒有出現(xiàn)?。?!,這時首先查看控制臺,看看是否報錯,根據(jù)報錯情況查找原因。在這說再一個特別的原因,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標簽的話,點擊一下你會發(fā)現(xiàn),嗯,又出問題了,路由無法跳轉(zhuǎn),這是千萬不要荒,穩(wěn)住,下面解決這個問題。
IE11上router-link無法跳轉(zhuǎn),主要是因為當url的hash change的時候,瀏覽器沒有做出相應。
這時候需要做一個兼容,當瀏覽器是IE11時手動給url加一個hashChange事件
下面是在網(wǎng)上找的兩種方法
第一種
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) }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue使用html2canvas實現(xiàn)截取圖片并保存
html2canvas是一個JavaScript庫,它可以將HTML元素轉(zhuǎn)換為Canvas元素本文將介紹一下Vue如何使用html2canvas實現(xiàn)截取圖片并保存功能,需要的可以參考下2023-12-12解決vue打包 npm run build-test突然不動了的問題
這篇文章主要介紹了解決vue打包 npm run build-test突然不動了的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Vue獲取HTMLCollection列表的children時結(jié)果為undefined問題
這篇文章主要介紹了Vue獲取HTMLCollection列表的children時結(jié)果為undefined問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03Vue嵌套iframe時$router.go(-1)后退bug的原因解析
這篇文章主要介紹了Vue嵌套iframe,$router.go(-1)后退bug的問題原因及解決方法,本文給大家分享問題原因所在及解決方案,需要的朋友可以參考下吧2023-09-09