如何设置Jquery Mobile页面data-url属性?

时间:2012-07-16 19:42:40

标签: jquery events url jquery-mobile

尝试在从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的新页面没有获得先前访问过的页面的路径名(这会导致一些令人困惑的导航......

1 个答案:

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