[mootools] Tips Bug fix – “element.getParent is not a function”

MooTools More1.2.4.2のツールチップ表示クラスTipsにあるバグの修正方法について。

主な症状

ツールチップ表示を有効にした要素にマウスオーバーしてからマウスアウトすると、
FireBugで element.getParent is not a function というエラーが出る。というもの。
(圧縮してあるとelementがbになる)
エラー行数は1142行目(未圧縮)
エラーは最初の1度しか出ない。

修正方法

原因となっているTipsのfireForParentメソッドを入れ替える。

ver 1.2.4.2 Original Code:

fireForParent: function(event, element){
	if (!element) return;
	var parentNode = element.getParent();
	if (parentNode == document.body) return;
	if (parentNode.retrieve('tip:enter')) parentNode.fireEvent('mouseenter', event);
	else this.fireForParent(parentNode, event);
}

Fix Code:

fireForParent: function(event, element){
	if (!element) return;
	var params = Array.link(arguments, {event: Event.type, element: Element.type});
	var parentNode = params.element.getParent();
	if (parentNode == document.body) return;
	if (parentNode.retrieve('tip:enter')) parentNode.fireEvent('mouseenter', params.event);
	else return this.fireForParent(parentNode, params.event);
}

参照元:Tips: “element.getParent()” not working, because “element” is of type Event
このバグは1.2.4.3で修正される予定。

Leave a Comment.