yuiのYAHOO.widget.Dialogにdojoのtreeが入れられない。の結論

このエントリは、先日書いたコレの結論編です。 - yuiのYAHOO.widget.Dialogにdojoのtreeが入れられない。 - http://d.hatena.ne.jp/syunduel/20060721/1153479745


yuiの「build/container/container.js」の2,615行目に、こんなソースがある。

var elementParent = this.element.parentNode;

var elementClone = this.element.cloneNode(true);
this.innerElement = elementClone;
this.innerElement.style.visibility = "inherit";

YAHOO.util.Dom.addClass(this.innerElement, "panel");

var wrapper = document.createElement("DIV");
wrapper.className = YAHOO.widget.Panel.CSS_PANEL_CONTAINER;
wrapper.id = elementClone.id + "_c";
	
wrapper.appendChild(elementClone);
	
if (elementParent) {
	elementParent.replaceChild(wrapper, this.element);
}


ダイアログにする部分のHTMLのクローンを作成し、別で新規作成したラッパーに乗っけて元のHTMLと入れ替えているらしい。そして、ここのクローン作成が上手くいっていないのが原因で、dojoがdojoTreeNode内のimgタグに設定したらしい「onclick$joinpoint」(IE DOM Explorerでそう見える)という属性が無くなってしまっているようだ。でもこのクローン作成の部分で使ってるのは、ただのDocument Object Modelのメソッドだからなぁ。どないしようもないかも。
さらに、同タグに設定される「__clobberAttrs__」って属性も、YAHOO.widget.Dialog.render()を走らせると消えてしまう。原因はもう調べてないけど。


yuidojoの順番で初期化すればいけるのか?と思って頑張ってみたけど、方法がわからなくて結局お手上げ。やっぱライブラリは1つにしとくべきかねぇ…。


追記)
解決しました。具体的な方法は書いていないけど。
http://d.hatena.ne.jp/syunduel/20060726/1153892856