JQuery Mobile和Firefox不能很好地协同工作?

时间:2013-09-18 00:08:09

标签: javascript jquery html jquery-mobile

jQuery Mobile遇到了一些问题。想知道是否有其他人在使用Firefox(桌面版)时遇到了一些错误,并且jQuery Mobile脚本包含在<head>中,如此:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>

在Chrome和Firefox中,我都会收到大量的CSS错误,我认为这些错误可以忽略不计。但是在Firefox中我得到了几个JS错误,这似乎也打破了我的页面(响应元素不像我删除jQuery Mobile脚本那样渲染)。

JS错误:

Empty string passed to getElementById(). @ http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.js:11100
Use of getPreventDefault() is deprecated.  Use defaultPrevented instead. @ http://code.jquery.com/jquery-1.9.1.js:3346

我知道错误看起来非常冗长,但我不熟悉膨胀的javascript插件及其优雅降级的策略。其他人有这个问题吗?

更新

根据蒂姆的回答,我已经拍摄了这些jQuery Mobile'警告'实际影响页面的证据。下面是我评论jQuery Mobile脚本标签时的页面:

Without jQuery Mobile

以下是jQuery Mobile脚本标记保留在页面中的内容:

With jQuery Mobile

请注意,我想使用jQuery Mobile的原因纯粹是因为它的移动触摸/滑动事件。我没兴趣采用它的hash / ajax链接功能。

3 个答案:

答案 0 :(得分:4)

Firefox给你的是警告,而不是错误:)

看看jQuery Mobile source

// find present pages
var path = $.mobile.path,
    $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ),
    hash = path.stripHash( path.stripQueryParams(path.parseLocation().hash) ),
    hashPage = document.getElementById( hash );

使用Chrome开发工具在该行上设置断点(Firefox和Firebug似乎无法加载整个脚本),我们可以看到,当URL中没有哈希值时,path.parseLocation().hash将无效,因此{ {1}}会抛出您在Firefox中看到的警告。

如果它困扰你,你可以在Firefox开发者控制台中关闭警告,但如果你打算使用jQuery Mobile,我担心会显示没有哈希的URL的警告。这不是Firefox试图告诉你一些错误,只是Firefox告诉你一些可能是错误的,在这种情况下不是这样。

关于其他警告,this discussion可能有用。似乎jQuery使用已弃用的document.getElementById( hash )来兼容Android 2.3。

答案 1 :(得分:3)

是的,jQuery Mobile在加载时会“弄乱DOM”。例如,jQuery Mobile会将您的内容包装在“page”div:

  

在幕后,框架将注入页面包装器(如果是)   不包含在标记中,因为它是管理页面所必需的   (Pages - jQuery Mobile Docs

但是你可以通过一次只包含一个jQuery Mobile位来查看它是破坏你网站的CSS还是Javascript。

对于getElementById()的通话,我也收到相同的警告,我可以确认这只是一个警告,不会影响布局。 I have asked specifically about getting rid this warning,但无济于事。

最后,您是否尝试使用jQuery Mobile's custom builder来获取您感兴趣的部分(即触控功能)?

答案 2 :(得分:0)

使用Firefox时,我的东西常常被抛出格式(许多其他小错误)如果仅用于测试,我建议谷歌Chrome或Safari获得最佳性能......