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()を走らせると消えてしまう。原因はもう調べてないけど。
yui→dojoの順番で初期化すればいけるのか?と思って頑張ってみたけど、方法がわからなくて結局お手上げ。やっぱライブラリは1つにしとくべきかねぇ…。
追記)
解決しました。具体的な方法は書いていないけど。
http://d.hatena.ne.jp/syunduel/20060726/1153892856