如何设置Jquery Mobile页面数据url属性



当从第1页转到第2页时,试图手动设置页面上的数据url属性时,会产生一种奇怪的效果。

我想将页面数据url属性设置为url路径名,如下所示:

 page.attr({ 'data-url' : $.mobile.path.parseUrl( window.location.href ).pathname });

现在我在睡前在页面上做这件事。问题是,如果我不等待至少400毫秒,数据url将始终设置为前一个页面url。所以我这么做,我觉得这真的很糟糕。。。

window.setTimeout(function () {
    page.attr({
        'data-url': $.mobile.path.parseUrl(window.location.href).pathname
    });
}, 400)

问题
这可能是因为我在放映前听了pageshow还是pageshow?我如何在没有超时的情况下确保被拉入DOM的新页面不会获得以前访问过的页面的路径名(这会导致导航混乱…

问题是pushstate隐藏了实际发生的事情。

如果您在Jquery Mobile中从www.site.com/folder/page1.html转到page2.html

 www.site.com/folder/page1.html/#/folder/page2.html

将掩模推入

  www.site.com/folder/page2.html

但如果使用parseURl.pathname,路径仍然是

  www.site.com/folder/page1.html

因此,将数据url设置为路径名将始终将其设置为

   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 });

最新更新