我正在与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 <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
设置的事实,这会导致非常特殊的延迟重新加载效果,从而导致糟糕的用户体验。我想避免这个中间步骤。