【问题标题】:jQuery not running on mobile browersjQuery没有在移动浏览器上运行
【发布时间】:2013-12-13 02:04:04
【问题描述】:

所以我正在为一个网站开发移动菜单,在我开始在一些设备上测试它之前,似乎一切都运行得很顺利。桌面上调整大小的窗口非常好,但手机却做了一些奇怪的事情。

看看我做的jsFiddle:http://jsfiddle.net/Amp3rsand/s9Hpa/2/

它应该让我了解我想要实现的目标。 如果您在桌面上查看该链接,菜单按钮将切换导航 div 没问题,但我发现在 IOS6 上使用 iPhone 4 查看时,菜单按钮仅更改为悬停状态并且不执行 jQuery .这与我正在开发的网站上发现的相同。

html 遵循以下结构:

<head>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
    <div>
        <ul id="navigation">
            <li id="home" class="current"><a href="#">Home</a></li>
            ...
            <li id="contact"><a href="#">Contact</a></li>
        </ul>
        <a href="#" id="menu"></a>
    </div>
</body>

在桌面网站上,#menu 设置为 display:none;,在 480 像素下设置为 display:block;#navigation 设置为 display: none; 除了为移动屏幕重新设置样式外,没有什么特别花哨的事情发生。

如您所见,我使用的是 Google 的 jQuery 1.10.2。

然后我尝试使用 jQuery 在#menu 上设置一个单击事件,该事件将切换#navigation。这是我当前代码的样子:

$(document).ready(function() {
    $.fn.slideFadeToggle  = function(speed, easing, callback) {
        return this.animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback);
    };
    $('#menu').click(function () {
        $('#navigation').slideFadeToggle();
    });
    $(window).resize(function () {
        if(window.innerWidth > 500) 
            {
                 $("#navigation").removeAttr("style");
            }
   });
});

我觉得我显然做错了什么,但我不知道是什么。任何帮助将不胜感激。

这似乎不是slideFadeToggle 的错,我试过没有它,没有任何变化。我已经尝试了一堆不同版本的 jQuery,也没有任何变化。我已确保手机上允许使用 JavaScript。

实际网站可以在这里找到:http://www.bridgeport.net.au/new/index.html

您可以看到有一些带有标题和标题的动画,并且图像会循环显示一些。我发现 IOS 设备(到目前为止我还无法在 Android 上进行测试)也没有运行任何这些动画。

当您调整窗口大小时,在桌面上一切正常,但在手机上却无法正常工作。甚至主页上的标题字体在手机上也不同,它们是在 css 中使用 @import 的谷歌网络字体,如下所示:

@import url(http://fonts.googleapis.com/css?family=Raleway:200|Josefin+Slab:400italic);

我一直认为这是托管服务器的问题,直到我制作了 jsFiddle 页面并发现了同样的问题。现在我被难住了。

编辑:我刚刚在带有 IOS7 的 iPhone 5 上对其进行了测试,发现它正在做同样的事情。

编辑 2:我意识到我使用的 jQuery 没有考虑到触摸事件,所以我将点击功能改为:

$('#menu').on('touchstart click', function(){
    $('#navigation').slideFadeToggle();
});

并在游标中添加:指针; #menu 根据我在堆栈溢出中发现的一些建议。

据我所知,仍然没有变化。可以在这里找到新的小提琴:http://jsfiddle.net/Amp3rsand/s9Hpa/14/

【问题讨论】:

    标签: jquery html ios iphone css


    【解决方案1】:

    而不是 this.animate 做 $(this).animate 看看这是否有效。我没有 iphone,但我在 android 默认浏览器和 chrome(适用于 android)中对其进行了测试,它可以工作。

    【讨论】:

    • 有趣,感谢您的帮助。我刚刚对其进行了测试,发现它仍然无法在我的 iphone safari 或 chrome 上运行。在更改之前它是否可以在 android 浏览器上运行?
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2022-09-25
    相关资源
    最近更新 更多