gpt4 book ai didi

javascript - 如何更改 Dojo TabContainer 行为以简单地打开外部链接而不是显示 ContentPane?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:58 24 4
gpt4 key购买 nike

我正在使用 TabContainer有几个不同的ContentPane children 。他们每个人都配备了一个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 会更改整个页面(dojo 应用程序)的 url 而不仅仅是 ContentPane。你有没有试过这样的事情:

cp2.set('href', 'http://www.google.com/')

关于javascript - 如何更改 Dojo TabContainer 行为以简单地打开外部链接而不是显示 ContentPane?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com