我的index.html看起来是这样的:
<!DOCTYPE html>
<html class="ui-mobile-rendering">
<head>
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta charset="utf-8">
<link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
<list rel="stylesheet" href="css/app.css" />
<script src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/underscore.js"></script>
<script type="text/javascript" src="js/backbone.js"></script>
<script type="text/javascript" src="js/views/attachmentlist.js"></script>
<script type="text/javascript" src="js/models/attachmentmodel.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script src="js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/cordova-1.7.0rc1.js"></script>
</head>
<body></body>
</html>当然,这些文件都没有jQuery移动的引用,只有索引才有引用。
我的app.js文件如下所示:
$(document).live("mobileinit", function () {
console.log('in Mobile Init');
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
// Remove page from DOM when it's being replaced
$('div[data-role="page"]').live('pagehide', function (event, ui) {
$(event.currentTarget).remove();
});
});有东西导致“移动init”发射两次。我不知道它是什么,甚至它是否真的是一个问题,但这感觉像是一些不应该发生的事情。
有什么办法能解决这个问题吗?
编辑
实际上,我刚刚注意到,如果我将一个简单的"script“标记直接放入其中并在其中执行一个console.log,那么它在这段代码中运行twice....sooo....something将导致我的整个页面被初始化两次。
实际上,我的整个安装程序看起来好像是加载了两次。当应用程序第一次加载时,我一直将console.logs放在一系列发生的事情上,并且所有的事情都发生了两次。
发布于 2012-05-17 18:32:25
我曾经遇到过类似的事情。不管它有什么价值,我就是这样解决的:
$(document).bind("mobileinit", function() {
$.extend( $.mobile , {
autoInitializePage: false,
loadingMessage: false
});
});如果我不得不修改它以适应您的代码,请尝试如下:
$(document).live("mobileinit", function () {
console.log('in Mobile Init');
$.extend( $.mobile , {
autoInitializePage: false,
loadingMessage: false
});
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
// Remove page from DOM when it's being replaced
$('div[data-role="page"]').live('pagehide', function (event, ui) {
$(event.currentTarget).remove();
});
});另外,您不应该使用jQuery的.live()函数。根据他们自己的文档
在jQuery 1.7中,不推荐使用
.live()方法。使用.on()附加事件处理程序。较早版本的jQuery的用户应该优先使用.delegate()而不是.live()。
发布于 2012-05-17 18:40:42
这可能不是你想听到的答案,但我相信这确实是我能给你的最有帮助的建议。
如果可能的话,我强烈建议您不要使用Jquery。我最近在一个团队工作,这个团队在Jquery手机做这样的事情时遇到了一个又一个问题。如果在加载页面时有任何异步代码,那么几乎不可能让Jquery的事件与您自己的事件同步。
如果你需要一个无缝的,本土的感觉你的移动网站,我强烈建议试用Spine和RequireJS。根据您的设计限制,Spine也可用,并将为您做一些工作。
Jquery手机本质上使浏览器以为你的站点是一个单一页面的应用程序,因此它最终会觉得非常笨重。如果你有时间做好备份,并真正构建一个真正的单页应用程序,你最终会得到更干净、更可靠的代码和一个更实用的应用程序。
抛出。您的开发团队和用户将感谢您。
编辑:这是2015年,所以也许不要使用脊柱和要求更多。试一试Webpack并做出反应!但是绝对不要使用Jquery手机,除非您需要更多这样的问题。
https://stackoverflow.com/questions/10636266
复制相似问题