如何在加载的页面中执行JavaScript?

时间:2011-11-03 11:10:41

标签: javascript html jquery-mobile

我使用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

1 个答案:

答案 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>