Vue2.0在IE11版本瀏覽器中的兼容性問題
用vue2.0開發(fā)做兼容時(shí),你可能會(huì)發(fā)現(xiàn)vue項(xiàng)目在IE11版本瀏覽器中是空白的。。。
看到空白的頁(yè)面你可能會(huì)懵幾秒鐘,沒事,下面我們就來解決這個(gè)問題~
讓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瀏覽器中重新跑下項(xiàng)目,你就會(huì)發(fā)現(xiàn),你辛苦做的頁(yè)面出現(xiàn)了!
但是頁(yè)面有可能還會(huì)沒有出現(xiàn)!??!,這時(shí)首先查看控制臺(tái),看看是否報(bào)錯(cuò),根據(jù)報(bào)錯(cuò)情況查找原因。在這說再一個(gè)特別的原因,static下的js文件中用了ES6的語法,針對(duì)這個(gè)問題,解決方法如下:
在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')]
? ? ? },
? ?? ?...
? }
}但是如果你的項(xiàng)目中有router-link標(biāo)簽的話,點(diǎn)擊一下你會(huì)發(fā)現(xiàn),嗯,又出問題了,路由無法跳轉(zhuǎn),這是千萬不要荒,穩(wěn)住,下面解決這個(gè)問題。
IE11上router-link無法跳轉(zhuǎn),主要是因?yàn)楫?dāng)url的hash change的時(shí)候,瀏覽器沒有做出相應(yīng)。
這時(shí)候需要做一個(gè)兼容,當(dāng)瀏覽器是IE11時(shí)手動(dòng)給url加一個(gè)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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue3?使用provide?inject父子組件傳值失敗且子組件不響應(yīng)
這篇文章主要介紹了vue3使用provide?inject父子組件傳值傳不過去且傳遞后子組件不具備響應(yīng)性問題解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Vue下載Excel后報(bào)錯(cuò),或打不開的解決
這篇文章主要介紹了Vue下載Excel后報(bào)錯(cuò),或打不開的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
ElementUI 詳細(xì)分析DatePicker 日期選擇器實(shí)戰(zhàn)
這篇文章主要介紹了ElementUI詳細(xì)分析DatePicker 日期選擇器實(shí)戰(zhàn)教程,本文通過實(shí)例代碼圖文介紹給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08
vue中 router.beforeEach() 的用法示例代碼
導(dǎo)航守衛(wèi)主要是通過跳轉(zhuǎn)或取消的方式守衛(wèi)導(dǎo)航,本文通過示例代碼講解vue中 router.beforeEach() 的用法,感興趣的朋友跟隨小編一起看看吧2023-12-12
vue-video-player實(shí)現(xiàn)實(shí)時(shí)視頻播放方式(監(jiān)控設(shè)備-rtmp流)
這篇文章主要介紹了vue-video-player實(shí)現(xiàn)實(shí)時(shí)視頻播放方式(監(jiān)控設(shè)備-rtmp流),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
詳解Vue單元測(cè)試Karma+Mocha學(xué)習(xí)筆記
本篇文章主要介紹了詳解Vue單元測(cè)試Karma+Mocha學(xué)習(xí)筆記,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01

