尝试在从page1转到page2时手动设置页面上的data-url属性时,我的效果很奇怪。
我想将页面data-url属性设置为URL路径名,如下所示:
page.attr({ 'data-url' : $.mobile.path.parseUrl( window.location.href ).pathname });
现在我正在pagebeforeshow上这样做。问题是,如果我不等待至少400毫秒,data-url将始终设置为上一页url。所以我这样做,我觉得这很糟糕......
window.setTimeout(function () {
page.attr({
'data-url': $.mobile.path.parseUrl(window.location.href).pathname
});
}, 400)
问题:
这可能是因为我听了pagebeforeshow与pageshow的比较吗?如何在没有超时的情况下确保被拉入DOM的新页面没有获得先前访问过的页面的路径名(这会导致一些令人困惑的导航......
答案 0 :(得分:0)
问题是pushstate隐藏了实际发生的事情。
如果您在Jquery Mobile中从 www.site.com/folder/page1.html 转到 page2.html ,那么您的无pushstate Url看起来像这样:
www.site.com/folder/page1.html/#/folder/page2.html
将面具推入
www.site.com/folder/page2.html
但是如果使用parseURl.pathname,路径仍然是
www.site.com/folder/page1.html
因此,将data-url设置为 pathname 将始终将其设置为
www.site.com/folder/page1.html
因为那是......路径名。 Pushstate只是没有显示它。我现在正在这样做,没有超时工作正常:
setPage = $.mobile.path.parseUrl( window.location.href );
setPageUrl = setPage.hash == "" ? setPage.pathname : setPage.hash.replace('#','');
page.attr({ 'data-url' : setPageUrl });