0

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

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

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

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

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

4

2 回答 2

0

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

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

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

于 2013-05-19T17:57:31.710 回答
0

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

就像我测试 2.3.0、2.3.1 和 2.3.2 并从 Django 与 CDN 服务并意外缓存只是碰巧没有告诉我这与 django 无关,直到问了这个问题 >.<

于 2013-07-17T18:33:09.443 回答