13

这就是我试图挂钩 mobileinit 事件的方式:

$(document).bind("mobileinit", function() {
    console.log("Mobile init");
});

但这不适用于 Chrome(最新版本)、Ripple v0.9.1 和运行 OS7.0 的黑莓粗体 9790。

注意:我也尝试过使用.on()而不是,.bind()但没有运气。两个 jQuery 移动版本(1.0.1 和 1.1.0)都失败了。

4

2 回答 2

47

我用过这个,它确实有效。

是否有可能是其他东西破坏了脚本或 mobileinit 没有被解雇?

Chrome 会触发 mobileinit 吗?

我刚刚找到了一些我在 jQuery Mobile 1.0 中使用的代码,我们刚刚升级到 1.1.0 并且它可以工作。

您确保还包括常规 ol' jQuery,对吗?

jQueryMobile 的文档可以做到这一点,所以我确信它可以工作。肯定有其他问题。对不起,我帮不上什么忙。你有更多信息吗?或者尝试使用其他设备。

[编辑]在同一个自我页面上,它说“因为 mobileinit 事件会立即触发,所以您需要在加载 jQuery Mobile 之前绑定您的事件处理程序。按以下顺序链接到您的 JavaScript 文件:”

<script src="jquery.js"></script>
<script src="custom-scripting.js"></script> <!-- Note your script before jqm -->
<script src="jquery-mobile.js"></script>

看起来脚本顺序很重要。

于 2012-04-18T17:06:29.753 回答
5

这是另一个适用于我的简单示例(适用于 android 和 ios)

<script type="text/javascript" src="files/resources/lib/jquery/jquery-1.8.2.js"> </script>
<script type="text/javascript">
$(document).bind("mobileinit", function()
                 {
                 if (navigator.userAgent.toLowerCase().indexOf("android") != -1)
                 {
                 // your logic here
                 $.mobile.defaultPageTransition = 'none';
                 $.mobile.defaultDialogTransition = 'none';
                 }
                 if (navigator.userAgent.toLowerCase().indexOf("msie") != -1)
                 {
                 // your logic here
                 $.mobile.allowCrossDomainPages = true;
                 $.support.cors = true;
                 }
                 });
</script>
<script type="text/javascript" src="files/resources/lib/jquerymobile/1.3.2/jquery.mobile-1.3.2.js"></script>
  1. 包括主 jquery 文件
  2. 在jquery mobile之前绑定mobileinit
  3. 包含 jquery 移动 js 文件
于 2013-12-22T21:49:50.763 回答