[英]how to reload current page in jquery mobile and trigger some event?
[英]how to reload a page with ?parameter=only link and replace the current anchor page in Jquery Mobile?
这听起来很复杂,不是吗……实际上很容易:
我有一个多语言应用程序,更改语言要求重新加载页面。
我希望用户
a) 无需更改rel =“ external”链接即可更改语言(重新启动应用)
b)从任何页面执行此操作,因此我的链接将仅包含语言参数?lang = EN
我一直在不停地摆弄这个,也从JQM开发人员那里得到了一些帮助,并试图在JQM文档的动态页面上坚持这个示例 。
以下解决方案是这样的。 请参阅下面的问题:
$(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 ,但是还需要做什么? 设定基准?
感谢您的提示!
只要您要重新加载外部页面(而不是多页面模板的伪页面$.mobile.changePage()
,就可以使用$.mobile.changePage()
非常轻松地重新加载页面:
$.mobile.changePage('myPage.cfm?lang=EN', {
reloadPage : true
});
这将从您的服务器请求一个新页面,该页面可以以所选的任何语言输出内容,然后在DOM中删除该页面的当前版本,最后将新版本添加到DOM。
reloadPage
标志的文档: http : //jquerymobile.com/demos/1.1.0/docs/api/methods.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.