私はTabContainer
いくつかの異なるContentPane
子供を持つことで働いています。href
それらのそれぞれには、タブが選択されているときに表示される外部 AJAX コンテンツを取得するためのパラメーターが装備されています。
dojo.addOnLoad(function() {
var tc_nav = new dijit.layout.TabContainer({
style: 'width: 98%;',
doLayout: false
}, 'tc_nav');
var cp1 = new dijit.layout.ContentPane({
title: 'Test 1',
href: 'ajax?test1',
style: 'padding: 10px;',
selected: true
});
dojo.connect(cp1, 'onShow', function() {
cp1.refresh();
});
/*
* ...
*/
tc_nav.addChild(cp1);
/*
* ...
*/
tc_nav.startup();
});
ここで、動作が異なるはずのタブを他のタブに統合したいと考えています。タブにコンテンツをロードする代わりにContentPane
、同じウィンドウ内の単純なリンク (のような<a href="http://www.google.com/">Link</a>
) をたどって、js/dojo アプリを含むページを離れます。満足のいく解決策も、この要件に一致する Dojo ウィジェットもまだ見つかりませんでした。最善のアプローチは何ですか?
onShow
不愉快な回避策として、次のイベントを起動するオーバーライドされたイベントを作成しましたwindow.location.href = '...';
。
var cp2 = new dijit.layout.ContentPane({
title: 'Test 2',
style: 'padding: 10px;'
});
dojo.connect(cp2, 'onShow', function() {
window.location.href = 'http://www.google.com/';
});
この回避策の厄介な欠点は、ContentPane
が最初にロードされ、その後でwindow.location.href
が設定されるという事実です。これにより、非常に独特な遅延リロード効果が発生し、その結果、ユーザー エクスペリエンスが低下します。この中間ステップは避けたいと思います。