【问题标题】:Django served bootstrap.js file not working in mobileDjango 提供的 bootstrap.js 文件在移动设备中不起作用
【发布时间】:2013-05-14 00:37:11
【问题描述】:

编辑:所以我缩小了问题的范围 - 当我链接到外部托管的 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 错误呢?文件的其他部分(如轮播插件)似乎可以正常工作。

【问题讨论】:

    标签: javascript jquery django twitter-bootstrap


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗯,我在这里尝试过,但没有运气:/ jsfiddle.net/5UAUP/13 我实际上发现它是 2.3.1 和 2.3.2 之间的一个错误...啊,我尝试了 2.3.0 和 2.3。 2 我很确定它在 2.3.0 中不起作用(在 2.3.2 中肯定不起作用)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多