我尝试使用jQuery注册一个onClick-handler,其功能应该是更改URL中的查询字符串并在我为window.location.href分配新URL时启动重新加载。
// sets a new URL with lang as query parameter indicating the language
setNewLang: function( lang ) {
var that = this;
// the url that shall be changed
var url = window.location.href;
// save possible other query parameters
var tokenizedUrl = url.split("&");
// first string in the array contains language query parameter
var tokenZero = tokenizedUrl[0].split("l=");
// set the new language query parameter in the first part of the url
tokenizedUrl[0] = tokenZero[0] + "l=" + lang;
// concatenate the splitted url
var retVal = tokenizedUrl[0];
for(i=1; i<tokenizedUrl.length; i++) {
retVal = retVal + "&" + tokenizedUrl[i];
}
console.log(retVal);
// reload page with new query parameter for language
window.location = retVal;
return false;
}
/* language selection for navbar-right*/
$("#navbarRightLanguageListEnglish").on("click", function() {
console.log("DBG-INFO"); /* even the log never appears */
that.setNewLang("en_US");
});
我用firefox尝试过它并且有效。 铬有缺陷吗?或者它是范围或jQuery的问题还是......? 如果有其他解决方案可以更改并重新加载网站,我很高兴知道它。
感谢您的帮助。
我忘记发布HTML并说我也使用了bootstrap。 顺便说一句,我自己发现了这个bug,但谢谢你的帮助。
<!-- Language Selection -->
<div id="navbarTopLanguage" class="dropdown dd-top">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" >Language<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<li id="navbarTopLanguageListEnglish" role="presentation"><a role="menuitem" tabindex="-1" href="">English</a></li>
<li id="navbarTopLanguageListDeutsch" role="presentation"><a role="menuitem" tabindex="-1" href="">Deutsch</a></li>
</ul>
</div>
<!-- End of Language Selection -->
&#34; href&#34; -attributes是空的,这是我的错。 Chromium给它们是(错误的)值,因此点击它没有想要的效果。
我通过更改javascript来修复它。
// sets a new URL with lang as query parameter indicating the language
setNewLang: function( id, lang ) {
// selfie-pattern
var that = this;
// the url that shall be changed
var url = window.location.href;
// save possible other query parameters
var tokenizedUrl = url.split("&");
// first string in the array contains language query parameter
var tokenZero = tokenizedUrl[0].split("l=");
// set the new language query parameter in the first part of the url
tokenizedUrl[0] = tokenZero[0] + "l=" + lang;
// concatenate the splitted url
var retVal = tokenizedUrl[0];
for(i=1; i<tokenizedUrl.length; i++) {
retVal = retVal + "&" + tokenizedUrl[i];
}
console.log(retVal);
// reload page with new query parameter for language
$(id).attr("href",retVal);
}
新函数用新URL替换指定的&#34; href&#34; -attribute(参数&#34; id&#34;)的值。
感谢您的帮助。
答案 0 :(得分:1)
请尝试
window.location.href = retVal;
而不是
window.location = '...'
如果您不想以前的网址转到浏览器历史记录,请尝试
window.location.replace(retVal)
希望这有帮助。