2

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 脚本标签时的页面:

没有 jQuery Mobile

这是留下 jQuery Mobile 脚本标签时页面的样子:

使用 jQuery Mobile

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

4

3 回答 3

4

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

看看jQuery Mobile 源代码

// 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 似乎无法加载整个脚本),我们可以看到path.parseLocation().hash当 URL 中没有哈希时,这将一事无成,因此document.getElementById( hash )会抛出您在 Firefox 中看到的警告。

如果它困扰您,您可以在 Firefox 开发控制台中关闭警告,但如果您打算使用 jQuery Mobile,恐怕警告将显示为没有哈希的 URL。不是 Firefox 试图告诉您某些事情是错误的,它只是 Firefox 告诉您某些事情可能是错误的,在这种情况下这是不正确的。

关于另一个警告,这个讨论可能很有用。似乎 jQuery 使用了弃用getPreventDefault()的与 Android 2.3 兼容。

于 2013-09-18T04:16:40.857 回答
3

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

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

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

关于对 的调用getElementById(),我也收到了同样的警告,我可以确认这只是一个警告,不会影响布局。 我已经专门询问过如何摆脱这个警告,但无济于事。

最后,您是否尝试过使用jQuery Mobile 的自定义构建器来获取您感兴趣的部分(即触摸功能)?

于 2013-09-19T10:27:59.993 回答
0

在使用 Firefox 时,我的东西经常会出现格式错误(还有许多其他小错误)如果只是为了测试,我建议使用谷歌 Chrome 或 Safari 以获得最佳性能......

于 2013-09-18T01:10:12.243 回答