【发布时间】:2016-12-08 16:30:47
【问题描述】:
我有四个链接,每个链接都有一个 onclick 事件,每个链接都将它们的语言代码传递给 changeLanguage 函数。该函数应删除 URL 的最后一个“/”之后的所有内容,并将其替换为新的语言代码,然后重定向到该地址。它大约有 60/70% 的时间工作,但如果没有,页面会重新加载当前页面。我试过window.location.href、window.location.replace、超时。它似乎也是随机的,它可能发生在任何国家的变化中。有什么想法吗?
例如从控制台:
(在法语页面上)
http://localhost:4000/product/fr
(更改为西班牙语 - 有效)
NEW URL http://localhost:4000/product/es
Navigated to http://localhost:4000/product/es
(改成英文 - 没用)
NEW URL http://localhost:4000/product/en
Navigated to http://localhost:4000/product/es
HTML
<ul class="social-links">
<li class="lang"><a id='en-lang-nav-button' onclick="return changeLanguage('en', event)" <%if(data.lang.lang == 'en'){%> class="active"<%}%>><%=data.lang.links[0].text%></a> | </li>
<li class="lang"><a id='fr-lang-nav-button' onclick="return changeLanguage('fr', event)" <%if(data.lang.lang == 'fr'){%> class="active"<%}%>><%=data.lang.links[1].text%></a> | </li>
<li class="lang"><a id='sp-lang-nav-button' onclick="return changeLanguage('es', event)" <%if(data.lang.lang == 'es'){%> class="active"<%}%>><%=data.lang.links[2].text%></a> | </li>
<li class="lang"><a id='pt-lang-nav-button' onclick="return changeLanguage('pt', event)" <%if(data.lang.lang == 'pt'){%> class="active"<%}%>><%=data.lang.links[3].text%></a> </li>
</ul>
JS
function changeLanguage(lang, event) {
var index, newURL;
event.preventDefault();
event.stopPropagation();
index = window.location.href.lastIndexOf('/');
newURL = window.location.href.substring(0, index) + '/' + lang;
console.log('NEW URL', newURL);
window.location = newURL;
return false;
};
BE 的标准路线:
router.get('/about/:lang(en|fr|es|pt)?', function(req, res, next) {
trackPath(req);
res.render('about', { data: router.getTemplateData(req.params.lang, 'about') });
});
【问题讨论】:
-
您尝试更换浏览器了吗?你用的是哪个浏览器?
-
使用Chrome,但最好兼容所有浏览器
标签: javascript jquery window jquery-events location-href