在我的vuex商店中,我使用vuex-persist插件,该插件在所有现代浏览器中都非常有效。它在IE11中不起作用,如果用户正在使用IE查看,我希望能够关闭该插件。这可能吗?
我的vuex商店通过...被拉入main.js。import store from '@/store/index.js';
我的商店代码是...
Vuex-index.js
import Vue from 'vue';
import Vuex from 'vuex';
import VuexPersist from 'vuex-persist';
import locales from './modules/locales.js';
import pdf from './modules/pdf-preview.js';
import site from './modules/site.js';
import user from './modules/user.js';
Vue.use(Vuex);
const vuexPersist = new VuexPersist({
key: 'vuex',
storage: window.localStorage,
modules: ['pdf','site','user'],
});
const store = new Vuex.Store({
state: {
},
modules: {
locales,
pdf,
site,
user,
},
plugins: [vuexPersist.plugin],
});
export default store;
我假设您遇到的真正问题是window.localStorage
不存在或不允许您存储任何内容,即使Internet Explorer从IE8开始就支持该功能。最好的方法是简单地检测不支持的功能(在本例中为localStorage),而不必加载插件:
const plugins = [];
let canStoreAnything = !!window.localStorage;
if (canStoreAnything) {
try {
window.localStorage.setItem("__test_localstorage_test__", 1);
window.localStorage.removeItem("__test_localstorage_test__");
} catch (e) {
// Probably Safari in incognito mode
canStoreAnything = false;
}
}
if (canStoreAnything) {
const vuexPersist = new VuexPersist({
key: "vuex",
storage: window.localStorage,
modules: ["any"]
});
plugins.push(vuexPersist.plugin);
}
const store = new Vuex.Store({
modules: {
any
},
plugins
});
[如果还有其他原因可以检测到Internet Explorer,则只需信任用户代理。它可以被欺骗,但是在您的用例中应该可以正常工作。将canStoreAnything
替换为isIE
,您可以使用以下行[[source]] >>进行计算
const isIE = window.navigator.userAgent.indexOf('MSIE') >= 0 || window.navigator.userAgent.indexOf('Trident') >= 0;