2007/08/08

Yahoo YUI のTabView では、hoge.html#fuga とかしたときにそのタブを開いてくれない


Yahoo YUITabView では、hoge.html#fuga とかしたときにそのタブを開いてくれない、というので困っていたので細工してみた。(環境依存だけど。)

いつもなら、
(function() {
var tabView = new YAHOO.widget.TabView('tabbox');
})();
とするところを、
(function() {
if(location.hash != "") {
var target_id = location.hash;
var tmp_target = target_id.split("_");
var target_id_li = tmp_target[0];
var target_id_in_content = tmp_target[1];

var tabs = document.getElementById("tabboxmenu").getElementsByTagName("a");
for(var i = 0; i < tabs.length; i++){
if(tabs[i].hash == target_id_li){
tabs[i].parentNode.className = "selected";
}
}
}
var tabView = new YAHOO.widget.TabView('tabbox');
})();


としてみた。
メニュー部分の親要素のid がtabboxmenu になって無くてはいけないとか決まりごと(自分が決めたわけだが。)はあるにせよ、とりあえず動いているようなのでこれで良しとする。

個別のタブの中まで指定したいときのことを考えて、アンダーバーで区切って中の要素を指定できるようにしてある。

Control.Tabs というやつだと
http://livepipe.net/projects/control_tabs/#two
みたいな感じでいけるぽかったが、中の要素までは参照してくれないんじゃないかと思って試してない。

0 件のコメント: