window.location.hash在pagecreate事件中返回空字符串

时间:2012-06-29 12:26:34

标签: jquery jquery-mobile

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

<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.And window.location.hash返回一个空字符串。这是因为我在页面的错误事件中调用它们?

1 个答案:

答案 0 :(得分:0)

您获取旧网址是因为您正在检查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)