我想通过单击语言名称来更改语言,我使用vuex-i18n在前端设置语言。我正在使用localStorage,但是localStorage在火狐上不工作,我在火狐57上测试,我在Chrome和Edge上测试,在那里可以工作,但在火狐上不工作。(我已经检查了配置,dom.storage.enabled是真的)我的组件代码是:
<template>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" id="menu-toggle" @click ="OpenMenu(menuclicked)"><span class="glyphicon glyphicon-list" aria-hidden="true"></span></a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="" @click="setLanguage('en')" >English</a></li>
<li><a href="" @click="setLanguage('es')"> Spanish</a></li>
<li v-for ="item in topNavbarOptions"><router-link v-on:click.native="item.clickEvent" :to="{name:item.route}"><span :class="item.icon"></span> {{ item.name}}</router-link></li>
</ul>
</div>
</div>
</nav>
</template>
<script>
import 'vue-awesome/icons';
import {HTTP} from '../common/http-common';
export default {
props:['topNavbarOptions'],
data: function () {
return {
menuclicked: false
}
},
created:function(){
this.$i18n.set(localStorage.getItem("locale"));
},
methods: {
OpenMenu: function (menuclicked) {
this.menuclicked = !menuclicked;
this.$emit('openmenu', this.menuclicked );
},
setLanguage:function(locale)
{
HTTP.get('lang/'+locale)
.then(response =>{
//Set locale from backend
localStorage.setItem("locale", locale);
})
.catch(error=>{
console.log(error);
});
}
}
}
</script>我在HTTP call.There中使用axios是一种不使用本地存储或会话存储来设置语言的方法。我必须在代码中进行哪些更改才能与Firefox兼容?
谢谢。
发布于 2017-11-23 16:18:03
你试过window.localStorage吗?这应该是上下文和作用域无关的。
https://stackoverflow.com/questions/47420960
复制相似问题