0

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にプルされた新しいページが、以前にアクセスしたページのパス名を取得しないようにするにはどうすればよいですか(これにより、ナビゲーションが混乱します...

4

1 に答える 1

0

問題は、プッシュステートが実際に何が起こるかを隠していたことです。

Jquery Mobile でwww.site.com/folder/page1.html から page2.html移動すると、none 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 をパス名に設定すると、常に次のように設定されます。

   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 });
于 2012-07-17T05:38:30.557 に答える