JQuery Mobile:在新页面上运行javascript方法

Sta*_*hil 1 html javascript jquery mobile-website jquery-mobile

我有一个应用程序,允许用户赢得奖品.要赢得奖品,他们需要访问这样的页面:我的移动页面www.myUrl.com#isAWinner在哪里#isAWinner.我担心有人会想到只是输入该网址并直接进入获胜者页面而没有真正获胜.为了解决这个问题,我尝试这样做:

<!-- Show this if the user is a winner -->
<div id = "isAWinner" data-role = "page">
    <p>YOU WIN!!!</p>
    <!-- Invisible link -->
    <a href = "#beforeLogin" id = "goBack" class = "InvisibleLinks"></a>
    <!-- Ensures that the user does not just enter #isAWinner to the end of the URL -->
    <script type="text/javascript"> reallyAWinner()</script>
</div>

function reallyAWinner () {
    alert(isAWinner);
    //Check to see if they really are a winner
    if (isAWinner == false) {
        //Not really a winner. Send back to login
        $('#goBack').click();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,alert当页面最初加载时会被点击,但如果我尝试在后面的文字中找到该URL,则不会再次点击该方法.

我不明白JQuery移动是如何工作的?是否只会reallyAWinner()在整个HTML页面加载时触及该方法,而不是在isAWinner页面加载时?如果是这样,是否还有另一种方法可以检查用户是否真的只是在isAWinner页面加载时成为赢家?

编辑:这里有更多信息.当我最初输入方法而不加载第一页时,警报reallyAWinner()将在我的document.ready方法中发出警报之前触发,使得$('#goBack').click();不起作用(因为未加载移动设备)

ppo*_*zos 9

如果启用了ajax方法调用,则在调用初始页面时将调用函数reallyAWinner().

只有在加载#isAWinner页面时,您可以执行以下操作才能调用您的函数winsWinner(),您可以在页面的id上注册"pageshow"事件.

所以你可以做到以下几点:

$('#isAWinner').live('pageshow', function () { reallyAWinner();  });
Run Code Online (Sandbox Code Playgroud)

来自jQueryMobile文档:

pageshow: Triggered on the page being shown, after its transition completes.
Run Code Online (Sandbox Code Playgroud)