有人可以评论我的错误修复吗?

我一直在使用Twitter的Bootstrap Tooltip插件 。 除了在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)) } 

这适用于所有浏览器。 经过一番搜索,我发现其他人遇到了同样的问题。 我不确定是否有更好的方法来修复此错误,尤其是在阅读链接中的参数后。

在IE9中,文档上有一个本机contains()实现,因此jQuery使用它。 问题是这个contains()实现没有扩展到SVG元素。

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

好吧,我可能会有一些建议,但最好的办法是继续使用bootstrap github并执行pull请求,@ fat和@mdo肯定会在合并代码之前先查看它,甚至会给你反馈。 干杯!