Dojo根据URL参数选择要打开的选项卡

时间:2011-01-04 19:32:26

标签: dojo tabs initialization

我在SO(Dojo: Select a tab on load depending on url parameter)上找到了此页面,但我仍然不清楚如何通过URL调用打开标签页。

这是我的HTML。

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script LANGUAGE="JavaScript1.2" type="text/javascript" 
        src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js"
        djConfig="usePlainJson : true, parseOnLoad: true">
</script>
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.TabContainer");
dojo.require("dojo.data.ItemFileReadStore");
</script>

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css"/>
</head>

<body class="claro" >

<div dojoType="dijit.layout.BorderContainer" style="width: 100%; height: 100%;">
    <div dojoType="dijit.layout.ContentPane" region="top">
    HEADER
</div>
<div dojoType="dijit.layout.TabContainer" region="center">
    <div dojoType="dijit.layout.ContentPane" title="tab1">
        <A NAME="tab1help">TAB 1 HELP</A>
</div>

    <div dojoType="dijit.layout.ContentPane" title="tab2">
        <A NAME="tab1help">TAB 2 HELP</A>
    </div>
</div>
<div dojoType="dijit.layout.ContentPane" region="bottom">
FOOTER
</div>
</div>

<script language="Javascript1.2" type="text/javascript">
    SCRIPT HERE TO GENERATE DIV CONTENT
</script>


</body>
</html>

底部的javascript会生成包含锚点的DIV内容。访问此页面的方法是简单地指定“help.html”。

问题是如何在URL(help.html)中指定打开此页面并打开选项卡2(或选项卡1或选项卡5?),具体取决于URL。甚至可以这样做吗?

作为背景,这是一个包含大约10个主题(每个都有一个标签)的帮助页面,它将作为卫星窗口打开。我需要能够打开一个特定的选项卡并转到锚点,具体取决于冲浪者在主Web应用程序窗口中需要帮助的功能。

非常感谢! 珍妮

3 个答案:

答案 0 :(得分:2)

首先,您需要添加查询参数或使用哈希来指定要显示的主题编号,例如,您可以使用help.html?topic=1help.html#1。加载页面后,您可以从URL获取主题编号。

然后获取选项卡容器的引用,并根据主题编号选择相应的选项卡。例如:

var tabContainer = dijit.byId("myTab");
var topicNumber = 5; // Get from URL
tabContainer.selectChild(tabContainer.getChildren()[topicNumber - 1]); // Assume that to the topic number starts from 1 

您还可以尝试将ID分配给每个标签,例如,topic1为主题编号1.然后

tabContainer.selectChild(dijit.byId("topic" + topicNumber));

答案 1 :(得分:1)

您可以使用php include。

<div dojoType="dijit.layout.ContentPane" title="tab1">
    <?php include 'help.php';?>
</div>

答案 2 :(得分:0)

我所做的所有研究表明,这不能通过URL调用完成。事实证明,您通过添加所选参数来打开所选标签...示例如下......

<div dojoType="dijit.layout.ContentPane" title="HELP" selected="true">

谢天谢地,我没有静态页面(它们是通过Catalyst生成的)所以我可以动态生成真实条件。

希望如果其他人有同样的问题,这将有所帮助。 JW