【问题标题】:Javascript with Jquery Mobile not working in Android 2.3 and lower带有 Jquery Mobile 的 Javascript 在 Android 2.3 及更低版本中不起作用
【发布时间】:2012-09-24 12:12:53
【问题描述】:

我正在开发一个应用程序,但它不会对用户操作做出任何响应。当您提交表单时,您只会得到一个空页面。 Anoniem inloggen 按钮也不起作用,两者都是用 javascript 创建的。这仅在使用 Android 2.3 或更低版本时发生。我尝试了很多解决方案,但到目前为止都没有。即使已经给出的解决方案也行不通。

应用链接:http://goo.gl/MsZfO

此应用的索引脚本如下所示:

<script type="text/javascript">
    $(document).ready(function($) { 
    checkMail();
    $.post('stats.php',
            function (data, textStatus) {
                $('#stats').empty();
                $('#stats').append(data).page();
                $('#stats').page('destroy').page();

            });

            $.post('welcome.php',
            function (data, textStatus) {
                $('#mail').empty();
                $('#mail').append(data).page();
                $('#mail').page('destroy').page();

            });

    function checkMail() {
                    var item = localStorage.getItem('maillogin');
            if (item !== null) {
                window.location = '#stats';
                }
            else{
                window.location = '#mail';
                }
    }
    });
</script> 

索引正文:

<div data-role="page" data-theme="a" id="mail" data-transition="none">
</div>
<div data-role="page" data-theme="a" id="stats" data-transition="none">
</div>

这是问题页面 (welcome.php) 脚本:

    $(document).ready(function($) { 
    $('#mailform').submit(function () {
            $.mobile.showPageLoadingMsg();
            var email = document.getElementById('email');
            var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                if (!filter.test(email.value)) {
                        $.mobile.changePage("#mail");
                        alert('Dit is geen geldig mailadres');
                        $.mobile.hidePageLoadingMsg();
                        return false
                    }
                else{
                if($('#checkbox').attr('checked')) {
            $.post('mailinsert.php',
            $('#mailform').serialize())
                localStorage.setItem('maillogin', $('#email').val());
                $('#inlogmail').empty();
                $('#inlogmail').append(localStorage.getItem('maillogin')).trigger('create');
                $.post('stats.php',
                                         function (data, textStatus) {
                                         $('#stats').empty();
                                         $('#stats').append(data).page();
                                         $('#stats').page('destroy').page();
                                         $.mobile.changePage("#stats");
                                         $.mobile.hidePageLoadingMsg();
                                         });


                }
                else{                       $.mobile.changePage("#mail");
                        alert('De voorwaarden zijn niet geaccepteerd');
                        $.mobile.hidePageLoadingMsg();
                        return false;
                        }

                }
            });
$('#skipright').click(function(){
                localStorage.setItem('maillogin', 'anoniem');
                $.post('stats.php',
                                         function (data, textStatus) {
                                         $('#stats').empty();
                                         $('#stats').append(data).page();
                                         $('#stats').page('destroy').page();
                                         $.mobile.changePage("#stats");
                                         $.mobile.hidePageLoadingMsg();
                                         });

});
});

以及问题页面(welcome.php)正文:

<form id="mailform">
<div data-role="fieldcontain">
<label for="email">E-mail:</label>
<input name="email" id="email" type="text" />
<br />
<div class="ui-grid-b ui-corner-all ui-shadow ui-bar ui-bar-b">
<input type="checkbox" name="checkbox" id="checkbox" data-role="none"/>
<label for="checkbox">Ja, ik accepteer de voorwaarden</label>
</div></br>
<input type="submit" value="Stemmen maar!"/>
</div>
</form>
<h3><a class="skipright" id="skipright">Anoniem inloggen</a></h3>
</div>

简而言之,welcome.php 中实现的操作(如 .click 和 .submit)在 android 2.3 或更低版本的 index.html 中不起作用。我们如何解决这些问题?

【问题讨论】:

    标签: javascript android jquery jquery-mobile


    【解决方案1】:

    尝试更改以下行:

    window.location = '#stats';
    

    对于这个:

    window.location.href += '#stats';
    

    更新
    如果您已经在该位置加载了锚链接(例如#home),请执行以下操作:

    window.location.href = window.location.href.substr(0, window.location.href.lastIndexOf('#')) + '#stats';
    

    【讨论】:

    • 我之前尝试过,但不幸的是这不起作用。用 Javascript 创建的按钮也不起作用。
    • 我已经用真正的错误更新了我的问题。错误不在 window.location 中,而是在用户操作中。在 Android 2.3 及更低版本上没有用户操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多