我正在使用具有几个不同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
,这导致了非常奇特的惰性重新加载效果,并因此带来了不良的用户体验。我想避免这个中间步骤。 最佳答案
ContentPanes实际上不是iframe,因此设置window.location.href不仅会更改ContentPane,还会更改整个页面(dojo应用)的网址。您是否尝试过以下方法:
cp2.set('href', 'http://www.google.com/')