如果使用IE,请关闭vuex-persist

问题描述 投票:0回答:1

在我的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;
vue.js vuex
1个回答
0
投票

我假设您遇到的真正问题是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
});

Edit Switch off vuex-persist if using IE

[如果还有其他原因可以检测到Internet Explorer,则只需信任用户代理。它可以被欺骗,但是在您的用例中应该可以正常工作。将canStoreAnything替换为isIE,您可以使用以下行[[source]] >>进行计算

const isIE = window.navigator.userAgent.indexOf('MSIE') >= 0 || window.navigator.userAgent.indexOf('Trident') >= 0;
© www.soinside.com 2019 - 2024. All rights reserved.