【问题标题】:JavaScript click events not working on Samsung Galaxy SIII on Android 4.0.4 default browserJavaScript 点击事件在 Android 4.0.4 默认浏览器上的三星 Galaxy SIII 上不起作用
【发布时间】:2012-07-16 08:28:42
【问题描述】:

我对 Android 4.0.4 上的三星 Galaxy SIII 的默认浏览器有一个最奇怪的问题:

对于以下页面,单击链接不会触发 JavaScript 处理程序。从其中一个 div 的内容中删除单个“a”字母会使它们再次工作...

这是JS控制台的截图:

我开了android bug report,如果你有同样的问题,请star一下,谢谢。

提前感谢您的帮助!

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        alert('attaching click handlers');
        $("#red").click(function(e) {
            alert('red clicked');
            $("body").css("background-color", "#CC0000");
        });
        $("#green").click(function(e) {
            alert('green clicked');
            $("body").css("background-color", "#00CC00");
        });
        $("#blue").click(function(e) {
            alert('blue clicked');
            $("body").css("background-color", "#0000CC");
        });
    });
</script>
</head>
<body>
    <div>
        <p>
            <a id="red" href="#">CHANGE TO RED</a>
        </p>
        <p>
            <a id="green" href="#">CHANGE TO GREEN</a>
        </p>
        <p>
            <a id="blue" href="#">CHANGE TO BLUE</a>
        </p>
    </div>
    <p>Removing one of the a's in the content below will make the JS
        click events work (i.e. trigger background color change), and
        so will changing the 'page' class or id into something else</p>
    <div class="page" id="page">
        <div>aaaaaaaaaaaaaaaaaaa</div>
        <ul>
            <li>
                <div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
            </li>
        </ul>
    </div>
</body>
</html>

【问题讨论】:

  • 试试 $(element).on('blur', function(){});
  • @Pilatus 我试过 $("#blue").blur(function(e) {... 但它不起作用,你用我的示例文件试过了吗?
  • 这适用于 Galaxy Nexus Android 4.0.4 默认浏览器。如果 Galaxy SIII 浏览器抛出任何错误,您是否尝试过查看控制台?
  • @TorstenWalter 当我点击一个链接时,我得到:Uncaught TypeError: Cannot convert null to object
  • 实际上我在页面加载时收到错误...

标签: javascript android jquery android-4.0-ice-cream-sandwich


【解决方案1】:

其实至少有一个简单的解决方案:将DIV的id改为不包含'page'子串...

与其说是解决方案,不如说是一种变通方法,但如果浏览器的自定义有问题,还能做什么?

【讨论】:

  • 你能解释一下这有什么关系吗?
  • @epeleg 我希望我能,我只是在试图理解为什么它发生在某些页面而不是其他页面上时找到了这个解决方法。你有这个问题吗?
  • 可能是这样,但是有点难以理解 :( 你对此有任何解释吗?这些是发生在我无法控制的设备上的错误。但我绝对有'page' 作为我的应用程序中某些 div 的 id 的子字符串。
【解决方案2】:

我刚刚在三星 Galaxy 上遇到了类似的问题。找到这个线程。更改自:

span id="page" 

到:

span id="pgNow" 

修好了!

【讨论】:

  • 我的班级名称包含“页面”字样。我已将它们重命名并修复。有点奇怪,但很有效。
【解决方案3】:

类似的方法也可以:

<a href='http://www.google.de' ontouchstart='window.location = this.href'>foo</a>"

【讨论】:

    猜你喜欢
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2015-07-27
    相关资源
    最近更新 更多