Я работаю с 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. Я не нашел ни удовлетворительного решения, ни виджета додзё, соответствующего этому требованию. Какой будет лучший подход?
В качестве неприятного обходного пути я создал переопределенное 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
, что приводит к весьма своеобразному эффекту отложенной перезагрузки и, как следствие, к плохому пользовательскому опыту. Я хотел бы избежать этого промежуточного шага.