【发布时间】:2026-02-17 11:25:02
【问题描述】:
这听起来很复杂,不是吗……其实很简单:
我有一个多语言应用程序,更改语言需要重新加载页面。
我希望用户
a) 能够更改语言无需 rel="external"ing 链接(重新启动应用程序)
b) 从任何页面执行此操作,因此我的链接将仅包含语言参数 ?lang=EN
我一直在摆弄这个问题,还从 JQM devs 那里得到了一些帮助,并试图在 JQM 文档的动态页面上贴近这个 example。
以下解决方案效果一般。请参阅下面的问题:
$(document).on( "pagebeforechange.lang", function( e, data ){
// just strings
if (typeof data.toPage === "string") {
if (data.toPage.indexOf("?lang=") > -1) {
console.log("language change")
// stop here
e.preventDefault();
e.stopPropagation();
var toUrl = $.mobile.path.parseUrl( data.toPage );
viewSwitch = toUrl.search.replace( /.*lang=/, "" ),
form = "",
service = "some_coldfusion_cfc_to_load_new_language.cfc",
method = "locale",
returnformat = "JSON",
targetUrl = toUrl.filename,
// fake submit
formdata = "form_submitted=lang&viewSwitch="+viewSwitch+"&method="+method+"&returnformat="+returnformat,
successHandler = function() {
alert("changed language successfully")
// now we changepage
$.mobile.changePage( targetUrl, {
reloadPage: true,
transition: "fade",
allowSamePageTransition: true
});
};
// send AJAX to update language server side
// page will reload on success
ajaxFormSubmit( form, service, formdata, targetUrl, successHandler );
}
}
});
好的。这可行,但是...该页面作为新页面添加到 DOM(使用 data-external-page="true",因此当我单击下一页时,该页面将被删除。
问题:
如何使这个重新加载的页面成为新的“锚”页面=留在 DOM 中的页面?我可以删除 data-external-page,但我还需要做什么?设置基地?...
感谢任何提示!
【问题讨论】:
标签: javascript jquery jquery-mobile refresh multilingual