Django服务bootstrap.js文件无法在移动设备上运行

时间:2013-05-19 08:41:10

标签: javascript jquery django twitter-bootstrap

编辑:所以我缩小了问题范围 - 当我链接到外部托管的bootstrap.min.js文件时,它工作,当我使用本地文件时(django的开发静态文件夹设置)不起作用

这让我把头发拉了出来。我看了很多线程,非常仔细地检查了HTML,我不知道它有什么区别。这是我的开发页面:http://iceberg.creatifcubed.com:8080,这里是jsfiddle http://jsfiddle.net/5UAUP/4/

问题出在移动浏览器(iPhone和iPad)上,当我点击它时,登录下拉关闭。许多线程建议e.stopPropagation() - 它出现在桌面浏览器中但不在移动浏览器上。我添加了一些警报,并尝试使用不同的变体来附加事件 - 并且它不会在移动游侠中被调用。

我将相同的代码添加到jsfiddle中 - 它在那里工作(复制并粘贴相同的HTML - 请参阅jsfiddle / 5UAUP / 5)。甚至不需要e.stopPropagation()。我通过w3验证器运行我的代码,没有错误。知道是什么导致了这个吗?

目前,我的页面设置为使用本地静态文件。它被正确包含在内并且所有内容 - 您可以在http://iceberg.creatifcubed.com:8080/static/lib/bootstrap-2.3.0/js/bootstrap.min.js看到它。我检查了标题,我没有看到任何奇怪的 - 所以当我链接到本地​​文件时为什么会导致javascript错误?该文件的其他部分 - 如carousel插件 - 似乎正在运作。

2 个答案:

答案 0 :(得分:0)

解决方案实际上比你想象的容易得多,不幸的是人们不得不浪费时间在这个小小的怪癖上,但我现在保证你知道它,你永远不会忘记它!

$('.dropdown form').on('click tap', function (e) {

您需要做的就是添加一个“tap”处理程序,以便移动浏览器对其做出正确反应。顺便说一下,这个DOES有效,因为jquery会自动按空格分割事件处理程序,所以“click”和“tap”是两个不同的处理程序

答案 1 :(得分:0)

问题实际上是2.3.2中的错误。 Github问题:https://github.com/twitter/bootstrap/issues/7927

就像我测试2.3.0,2.3.1和2.3.2的方式,从Django对CDN服务并且意外缓存恰好没有告诉我它与django无关,直到问了这个问题> <