Twitter の 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))
}
そして、これはすべてのブラウザーで正常に機能します。いくつかの検索の後、他の誰かが同じ問題に直面していることがわかりました。特にリンクの引数を読んだ後、このバグを修正するより良い方法があるかどうかはわかりません。
IE9 では、ドキュメントにネイティブの contains() 実装があるため、jQuery はそれを使用します。問題は、この contains() 実装が SVG 要素に拡張されないことです。
私の修正を改善できるかどうかについて何か提案はありますか?