我使用jQuery Mobile。 但是当我将页面作为页面加载到另一个html文件中时,该头标记中的javascript将不会执行。 我查看了源代码,发现head标签仍然是原始标签。 那么在页面加载时我该怎么做才能运行脚本?
EDIT1:
我也尝试在body标签内写入js代码,但是当离开时脚本不会停止。 我有一个计时器,所以将有两个计时器赛车。
EDIT2:
我上传了网页:
main.html中 http://pastebin.com/0Y9Xfrtw
recharge.html http://pastebin.com/j9HfUvqZ
recharge.js http://pastebin.com/K5eCwMAb
答案 0 :(得分:4)
更新#2:
尝试在页面转换之前停止计时器。由于您使用多个页面,我不确定在其他地方导航时计时器是否停止。尝试测试不同的页面转换事件:
在上面的示例中,我使用了:
pagebeforehide
更新:
我尝试将您的代码从PasteBin广告到JSFiddle
我认为这是有效的,因为我看到充电页面上的计时器倒计时,如果它达到零,则导航回主页:
我在这个方法上遇到错误:
未捕获的TypeError:对象[object Object]没有方法'everyTime'
每个时间的替代
使用jQM所有JavaScript(对于每个页面)都应该在首先加载的页面中。因此,如果您加载index.html将所有JavaScript放在此页面中。要为特定页面执行JavaScript,您可以使用页面初始化事件之一Docs:
JS
$('#page_id').live( 'pageshow',function(event, ui){
alert( 'This page was just hidden: '+ ui.prevPage);
});
示例:
JS
$('#home').live( 'pageshow',function(event, ui){
alert( 'We are back home');
});
$('#page2').live( 'pageshow',function(event, ui){
alert( 'This will only execute on Page 2');
});
HTML
<div data-role="page" id="home">
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Overview</li>
<li><a href="#page2">Page 2</a></li>
</ul>
</div>
</div>
<div data-role="page" id="page2">
<div data-role="content">
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="f">
<li data-role="list-divider">Overview</li>
<li><a href="#home">Go Back Home</a></li>
</ul>
</div>
</div>