2012-04-30 136 views
0

我正在使用jQuery Mobile构建移动Web应用程序。我正面临一些非常奇怪的问题。jQuery Mobile页面加载问题

页面与标准标签连接。每当我点击一个链接,地址栏中的位置发生变化,我确实被重定向到了新页面,但为了使页面呈现一些我需要使用Cntrl + F5显式刷新它或点击刷新浏览器按钮。我曾尝试使用FF11和Chrome。这是一个已知的问题?

感谢

回答

0

我相信我知道,因为我的期望是页面准备好你正在经历什么/加载事件将触发。有许多方法来解决这个问题,比如:

首先,你可以简单地添加以下子句中的源页面链接到目标页面:

rel = "external" 

这将导致目标页面刷新并触发那些我认为具有要执行的JavaScript代码的页面加载事件。但是,您可能不希望页面显示此行为,所以...

另一种方法是将一些脚本添加到源页面,当目标页面变为活动状态(或“活动”)时将触发该脚本:

$('#YourTargetPageName').live('pageinit', function(event){ 
    alert('Hello from the TargetPage'); 
    $('#SomeInputField').val('Changed text in the target page'); 
}); 

在上面的示例代码,当你链接到目标页面会显示弹出式警报,以及更改所选输入字段中的文本。

最后,如果你想拥有在任何每一页开始执行相同的代码,那么你会添加下面的脚本:

$(document).delegate('.ui-page', 'pageshow', function() { 
    alert('Hello from the beginning of every page'); 
}); 

有很多其他的选择,你可以探索在JQM文件(为了公平起见,我才刚刚刮伤表面,所以有些人可能会制定出更好的为您的目的):

http://jquerymobile.com/test/docs/api/events.html

+1

进一步注意到,页面加载事件的行为可能不同根据您是否使用雇用您的页面为多页或单页,尤其是在第一次加载页面之后。例如,事件在多页面格式中只会触发一次,并且不会再返回到这些多页面链接。但是,如果我将这些分解成单独的单个页面,则每次都会触发事件。这在文档中对我来说并不明显,但也许我错过了一些可以更好地解释这一点的东西。 –