0

我有一个包含内部页面链接的页面,请在下面找到代码。

<body> 
    <div id="serviceDetailsPage" data-role="page">

        <div data-role="header" data-position="fixed" data-tap-toggle="false" data-theme="e">
        </div>

        <div data-role="content">

           <a class="loadAudio" data-role="button" data-mini="true" data-inline="true" href="#testPage">test</a>

        </div>      

        <div data-role="footer" class="footerLinks" data-position="fixed"> 
        </div> 
    </div>

    <div id="testPage" data-role="page">

        <div data-role="header" data-position="fixed" data-tap-toggle="false" data-theme="e">
        </div>

        <div data-role="content">

           testPage

        </div>      

        <div data-role="footer" class="footerLinks" data-position="fixed"> 
        </div> 
    </div>

    <script>
    $('#testPage').live('pagecreate',function(){
        console.log(window.location.hash);//returns an empty string
       console.log(window.location.href);//returns old URL
    });
    </script>

    </body>

当页面加载时,URL 是

../MyApp/index.html

单击链接后,URL 更改为

../MyApp/index.html#testPage

当我使用 window.location.href 时,我得到了旧的 URL,我想我会得到更新的 URL。window.location.hash 返回一个空字符串。这是因为我在页面的错误事件中调用它们吗?

4

1 回答 1

0

当您尚未导航到新 url 时(测试页是在导航到之前创建的),您获得了旧 url,因为您正在 pagecreate 处进行检查。如果您改为在 pageshow 进行检查,那么您的两种方法都会得到正确的值(但不同的字符串)。您也可以使用 $.mobile.activePage.attr("id"):

$( document ).delegate('#testPage', 'pageshow',function(){
   console.log(window.location.hash);
   console.log(window.location.href);
   console.log($.mobile.activePage.attr("id"));
});​

(我也使用了 .delegate 而不是 .live)

于 2012-07-02T01:39:30.640 回答