Hyperlink Dojo选项卡-填充w/HTML/JS和锚链接

Hyperlink Dojo选项卡-填充w/HTML/JS和锚链接,hyperlink,tabs,dojo,tabcontainer,Hyperlink,Tabs,Dojo,Tabcontainer,我正在开发一个利用标签的web应用程序。我遇到过一个看起来很小的问题,但我还没有找到解决方案,我担心这表明我的代码存在更大的问题 我的应用程序有一个主页,其中包含一个选项卡容器和几个内容窗格,然后作为子级插入。我认为让每个内容窗格加载一个外部HTML文件并以这种方式加载是一个很好的解决方案——它似乎提供了模块化设计,并允许轻松更改单个选项卡的内容。我现在遇到的问题是,虽然所有内容都正确加载,但我无法在选项卡内部或选项卡之间提供锚定链接。以下是一些示例代码: var tabs = new TabC

我正在开发一个利用标签的web应用程序。我遇到过一个看起来很小的问题,但我还没有找到解决方案,我担心这表明我的代码存在更大的问题

我的应用程序有一个主页,其中包含一个选项卡容器和几个内容窗格,然后作为子级插入。我认为让每个内容窗格加载一个外部HTML文件并以这种方式加载是一个很好的解决方案——它似乎提供了模块化设计,并允许轻松更改单个选项卡的内容。我现在遇到的问题是,虽然所有内容都正确加载,但我无法在选项卡内部或选项卡之间提供锚定链接。以下是一些示例代码:

var tabs = new TabContainer({
    style: "height: 100%; width: 100%;" 
}, "tab-container");
tabs.startup();
var metadata = new ContentPane({
    title: "Metadata",
    id: "Metadata"
});
/* repeat for the non-metadata content panes */
request.get("/js/viewer/templates/splash.html").then(function (results) {
    splash.set("content", results);
});
/* repeat for each pane */
对于我的元数据页面,我希望它包含有关我提供给用户的数据集的信息。理想情况下,它会有一个目录,其中包含指向正确条目的锚链接。但是,当我实现锚定链接时,如下所示:

<a href="#test">Click me to jump down the page!</a>
<!-- some content here -->
<div id="test">We made it!</div>
该链接是可点击的,它实际上会将您带到正确的位置,但它似乎总是在一个新的框架中加载该链接,如果用户希望执行其他操作,则需要重新加载页面。我试过玩标签属性,但没有用。我还希望能够在选项卡之间进行链接,比如说,如果用户在我提供给他们的某个查询页面上进行查询,然后想知道数据集的来源或其他信息

下面是一个简单的imgur相册,展示了发生的情况:

单击第一个图像中的链接后,您将被发送到下一页。但是,即使您向上滚动,页面的选项卡栏和导航栏也会完全消失。我不知道这是为什么

所以,这是一个很长的问题,但这里是它的核心:


锚定链接有什么问题

要回答您的第一个问题:

您应该将所有JavaScript放在主页中,而不是放在分区中。这不是JavaScript的最佳实践,因为这意味着您必须评估内容,通常当您在不需要的时候开始评估内容时,您就做错了

在这种情况下,您可以轻松地将所有JavaScript代码添加到主页面。如果需要等待打开或加载特定选项卡,可以在dijit/layout/ContentPane小部件上使用onShow或onLoad事件

此外,当您使用ContentPane时,您应该使用适当的设置程序向其添加内容/HTML

而不是做:

request.get("/js/viewer/templates/splash.html").then(function (results) {
     dojo.byId("Splash").innerHTML = results;
});
你应该做:

request.get("/js/viewer/templates/splash.html").then(function (results) {
    splash.set("content", results);
});
或者,如果您不再有对splash变量的引用,则应该使用registry.byIdsplash.setcontent和results

关于超链接,我不知道。我没有得到同样的行为,所以你能进一步解释一下吗


这里有一个我所能看到的工作示例:

在我的例子中,这种行为似乎是由溢出:我的网站主体的隐藏CSS属性与我的标签容器的高度:100%属性交互引起的。我没有意识到设置overflow:hidden属性是因为它是我正在使用的框架的一部分。通过更改溢出属性,我已经能够实现所需的行为

谢谢你的评论。我查看了你的JSFIDLE,这正是我想要做的,但它似乎没有发生。我制作了一张简单的imgur专辑,我正在将它编辑到我的问题中,试图说明到底发生了什么。我已经做了您建议的其他更改,不过,谢谢您关于只使用onLoad的建议。。。我完全忘了!非常值得赞赏的是,这些链接上的target=\u是空的吗?它们没有。我尝试添加target=_blank,但它们确实在新的浏览器选项卡中打开了,这与我看到的问题不同——它们劫持了当前的浏览器选项卡。不过,强制target=\u self并没有解决这个问题。我发布的代码第二个代码块就是我正在使用的代码,除了一些删除的Lorem Ipsum来填充空间。我希望我有代表+1你在这个网站上,因为你已经赢得了它。