【问题标题】:JQuery Mobile: Run javascript method on new pageJQuery Mobile:在新页面上运行 javascript 方法
【发布时间】:2011-06-09 14:29:08
【问题描述】:

我有一个可以让用户赢取奖品的应用。要赢得奖品,他们需要访问这样的页面: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();
    }
}

问题是在页面最初加载时会点击alert,但如果我尝试在之后访问该 URL,则不会再次点击该方法。

我不了解 JQuery mobile 的工作原理吗?它是否只会在整个 HTML 页面加载时才使用 reallyAWinner() 方法,而不是在 isAWinner 页面加载时?如果是这样,是否有其他方法可以仅在 isAWinner 页面加载时检查用户是否真的是赢家?

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

【问题讨论】:

    标签: javascript jquery html jquery-mobile mobile-website


    【解决方案1】:

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

    只有在加载#isAWinner 页面时才能调用函数reallyAWinner(),您可以在页面ID 上注册“pageshow”事件。

    因此您可以执行以下操作:

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

    来自 jQueryMobile 文档:

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

    【讨论】:

    • 谢谢。这让它在加载该页面时加载该方法。还有一个问题。我编辑了该方法以包含以下内容:$.mobile.changePage('#beforeLogin'); 其中beforeLogin 是我要将它们重定向到的页面的ID。当该方法运行时,该调用将不起作用,但是当我将该行复制并粘贴到 firebug 时,它确实起作用。我错过了什么吗?
    • 我认为您需要编写 $.mobile.changePage($('#beforeLogin')) 作为 changePage 接受的第一个参数是 jQuery 页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多