【问题标题】:Why isn't my Bootstrap modal window working in Opera?为什么我的 Bootstrap 模态窗口在 Opera 中不起作用?
【发布时间】:2012-07-21 05:58:31
【问题描述】:

我使用 Twitter Bootstrap 框架设置了一个模态登录窗口,与http://twitter.github.com/bootstrap/javascript.html#modals 中的描述完全相同(使用标记方法并使用他们的演示模态窗口作为起点)。 它在多种浏览器上运行良好(这是首先使用Bootstrap 的重要原因之一)。

但是,当我在 Opera 中测试我的页面时,模式窗口无法正常工作。页面按原样淡出,但窗口不出现。为什么?

使用:Bootstrap v2.0.4,Opera 12

【问题讨论】:

    标签: javascript css twitter-bootstrap modal-dialog opera


    【解决方案1】:

    这是 Bootstrap 中的 known bug,我确信正在修复中,但是对于那些迫不及待或不能随便更改框架版本的人来说,这里有一个不错的使固定: 问题是由于模态窗口的典型标记中使用的“淡入淡出”类:

    <div id="myModal" class="modal hide fade in">
    

    这个fade 类为模态窗口的出现/关闭提供了漂亮的动画。它显然在 Opera 12 中被破坏了。

    虽然删除 fade 类会使其工作,但没有理由剥夺其他浏览器用户,因此您可以使用这个方便的 Javascript sn-p:

    <script type="text/javascript">
        $(document).ready(function()
        {
            if (navigator.appName == "Opera")
            {
                $('#myModal').removeClass('fade');
            }
        });
    </script>
    

    这将为 Opera 删除 fade 类,但为其他浏览器保留它。请注意,这将完全禁用 Opera,包括使用旧版本的人。如果您有兴趣缩小修复范围,您可以测试 navigator.userAgent 以确定版本(Opera 12 的用户代理标头在我的计算机上是 Opera/9.80 (Windows NT 6.1; WOW64; U; en) Presto/2.10.289 Version/12.00,但由于这不是通用的只是想检查字符串末尾是否存在12.00。也许勤劳且不那么困的人可以在 cmets 中添加增强版本:)

    【讨论】:

    • 由于12.01还没有修复,可以使用:if (navigator.appName == "Opera" &amp;&amp; navigator.userAgent.match(/Version\/12\./)) {
    • 更简单和全局:if ($.browser.opera) $('.fade').removeClass('fade');(当然,当 DOM 准备好时)
    【解决方案2】:

    我建议使用modernizr之类的东西 $('.no-csstransforms3d .fade').removeClass('fade'); 而是

    这样,如果例如 opera release opera 13 上面的代码不能工作:P

    可以.no-csstransforms3d .modal.fade

    【讨论】:

    • 这是一个非常棒且有用的工具,但除非他们已经在使用 Modernizr,否则更新到 Bootstrap 的工作分支可能同样容易。我的方法是针对那些(像我一样)在我们可以在给定项目中使用和更新哪些库方面更加束手无策的人。但是奖励知识总是++ :)
    • 问题是当 opera 突然发布 3d 转换时会发生什么。然后你必须再次编辑你的代码。我很确定他们可能只是将它添加到 12.50(还没有)。我有最新的 git repo for bootstrap .. 如果没有上面的“修复”在 Opera next 中仍然无法工作
    • 请记住 google+ 在 Opera 12.50 刚发布时并不能与它一起工作。修复方法是将您的浏览器字符串更改为镜像 firefox 等。所以如果有任何用户尝试这样做引导程序...问题我真的认为所有项目都应该包括modernizr 呵呵:P 它使开发变得非常容易
    • 我当然同意,Modernizr 是天赐之物,我已经在整个网站的许多地方使用它。但是,当我研究它时,我无法确定失败的原因(即与 Modernizr 测试的兼容性),因此我采用了更多的霰弹枪方法。但是您的信息很棒,谢谢
    猜你喜欢
    • 2016-08-31
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多