2011-06-09 83 views
1

我有一個應用程序,允許用戶贏得獎品。要獲得獎勵,他們需要訪問如下網頁:www.myUrl.com#isAWinner其中#isAWinner是我的手機頁面。我擔心有人會想到只是輸入該網址並直接進入贏家頁面而沒有真正獲勝。爲了解決這個問題,我試圖做到這一點:JQuery Mobile:在新頁面上運行javascript方法

<!-- 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(); 
    } 
} 

的問題是,當頁面最初加載,但如果我嘗試去那個URL後記,則該方法不會被再次擊中alert被擊中。

我不理解JQuery移動如何工作?當整個HTML頁面加載時,它只會觸及reallyAWinner()方法,而不是當isAWinner頁面加載時?如果是這樣,是否有另一種方式,我可以檢查用戶是否真的只有在isAWinner頁面加載時纔是贏家?

編輯:這裏有一些信息。當我最初進入方法不加載的第一頁,在reallyAWinner()警報會警告我在document.ready方法之前進行發射,使得$('#goBack').click();無法正常工作(由於移動未加載)

回答

9

如果已經啓用了AJAX方法調用函數reallyAWinner()將在您的初始頁面被調用時調用。

只有在加載了#isAWinner頁面後,您才能調用函數reallyAWinner(),您可以在頁面的id上註冊一個「pageshow」事件。

所以,你可以做到以下幾點:

$('#isAWinner').live('pageshow', function() { reallyAWinner(); }); 

從jQueryMobile文檔:

pageshow: Triggered on the page being shown, after its transition completes. 
+0

感謝。當它加載頁面時,它會加載該方法。還有一個問題。我編輯了這個方法來包含這個內容:'$ .mobile.changePage('#beforeLogin');'其中'之前的'Login'是我想重定向到的頁面的ID。當該方法運行時,該調用將不起作用,但是當我將該行復制並粘貼到螢火蟲中時,它確實起作用。我在那裏錯過了什麼? – 2011-06-09 15:07:54

+0

我認爲你需要編寫$ .mobile.changePage($('#beforeLogin'))作爲changePage接受的第一個參數是一個jQuery頁面。 – ppolyzos 2011-06-09 15:32:30

相關問題