我有一个包含内部网页链接的页面,请找到以下代码。
<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返回一个空字符串。这是因为我在页面的错误事件中调用它们?
答案 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)