【问题标题】:Can someone comment on my bug fix?有人可以评论我的错误修复吗?
【发布时间】:2012-06-22 07:30:57
【问题描述】:

我一直在使用Twitter's Bootstrap Tooltip plugin。除了在svg 元素上使用时,它工作得很好。经过一些调试,我缩小了问题的范围。在js 文件中,init 函数如下所示:

  , init: function (type, element, options) {
      var eventIn
        , eventOut

      ...

      if (this.options.trigger != 'manual') {
        eventIn  = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
        eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
        this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
        this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
      }

      ...

    }

我记得 SVG-IE 9.0 的具体实现存在许多问题,因此我进行了以下修改:

  if (this.options.trigger != 'manual') {
    eventIn  = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
    eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
    var flag = $.browser.msie  && parseInt($.browser.version, 10) === 9
    eventIn = flag ? "mouseover" : eventIn
    eventOut = flag ? "mouseout" : eventOut

    this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
    this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
  }

这在所有浏览器中都可以正常工作。经过一番搜索,我发现someone else 面临同样的问题。我不确定是否有更好的方法来修复这个错误,尤其是在阅读了link 中的参数之后。

在 IE9 中,文档上有一个原生 contains() 实现, 所以 jQuery 使用它。问题是这个 contains() 实现 不扩展到 SVG 元素。

关于我的修复是否可以改进的任何建议?

【问题讨论】:

标签: jquery internet-explorer svg cross-browser twitter-bootstrap


【解决方案1】:

好吧,我可能有一些建议,但最好的办法是继续 bootstrap github 并提出拉取请求,@fat 和 @mdo 肯定会在合并您的代码之前查看它,甚至给您反馈.干杯!

【讨论】:

  • 太棒了!谢谢你。我会按照你的建议去做。
猜你喜欢
  • 1970-01-01
  • 2010-09-20
  • 2016-09-02
  • 2014-02-06
  • 1970-01-01
  • 2015-10-24
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多