Javascript 如何在Jquery Mobile中重新加载带有?参数=仅链接的页面并替换当前锚定页面?

Javascript 如何在Jquery Mobile中重新加载带有?参数=仅链接的页面并替换当前锚定页面?,javascript,jquery,jquery-mobile,refresh,multilingual,Javascript,Jquery,Jquery Mobile,Refresh,Multilingual,听起来很复杂,不是吗。。。其实很简单: 我有一个多语言应用程序,更改语言需要重新加载页面 我希望用户能够 a) 无需重新链接即可更改语言(重新启动应用程序) b) 从任何页面执行此操作,因此我的链接将只包含语言参数?lang=EN 我一直在摆弄这个问题,也从JQM文档的动态页面上得到了一些帮助,并试图在动态页面上接近这个问题 下面的解决方案就是这样。见下面我的问题: $(document).on( "pagebeforechange.lang", function( e, data ){

听起来很复杂,不是吗。。。其实很简单:

我有一个多语言应用程序,更改语言需要重新加载页面

我希望用户能够
a) 无需重新链接即可更改语言(重新启动应用程序)
b) 从任何页面执行此操作,因此我的链接将只包含语言参数?lang=EN

我一直在摆弄这个问题,也从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中的页面?我可以从外部页面删除数据,但我还需要做什么?设置基础


感谢您的提示!

只要您正在重新加载外部页面(不是多页面模板的伪页面),就可以使用
$.mobile.changePage()
非常轻松地重新加载页面:

这将从您的服务器请求一个新页面,该页面可以以选择的任何语言输出内容,然后在DOM中删除此页面的当前版本,最后将新版本添加到DOM中


reloadPage的文档
flag:

这是一个外部页面,但如果我只有一个像?lang=EN(没有myPage.cfm)这样的链接,JQM没有删除原始页面,这是我的问题-它再次将其添加到DOM中,因此我在DOM中有相同页面的德语和英语版本。我可以恢复使用Coldfusion#CGI.PATH#+lang=EN,它将当前路径插入链接,因此模板中的链接将是灵活的),但我认为只有JQM才能做到这一点。至少只提供链接参数应该告诉JQM“mh,也许这是同一页:-)”。请在?para=上尝试$.mobile.path.parseUrl…仅…稍晚。。。我坚持使用一个临时解决方案,并且在DOM twiche中有相同的页面。一个是默认语言,另一个是用户在更改语言时加载的。我将语言保留在服务器上,因此当用户转到另一个页面时,我翻译的起始页面将替换为翻译的“另一个页面”。如果我找到一种方法,用不带rel=external的翻译页面替换默认languag页面,我将重新发布。和往常一样,感谢您的宝贵意见!
$.mobile.changePage('myPage.cfm?lang=EN', {
    reloadPage : true
});