0

在我的 Java EE 应用程序页面中,我有 header.jsp、side menu.jsp、body.jsp 和 footer.jsp。侧边菜单包含 jQuery dynatree 插件。当用户单击树中的菜单项时,应使用适当的页面(也是 .jsp)更改正文。我正在使用瓷砖框架,我在 layout.jsp 页面中导入所有 js 代码。我想实现复制框架集的效果,但没有实际使用框架集。我认为框架集很难管理并且需要时间来加载。

谁能建议我如何解决这个问题?如果我在激活 dynatree 节点时使用 AJAX 获取每个页面,那么我必须手动更新页面。如果我使用IFRAMEin body.jsp,那么我必须重新导入所有插件 js 代码,因为框架将无法访问主页上的 js 功能。

我想要高效的 html 页面管理。

4

1 回答 1

3

由于您使用的是 jQuery,因此您应该能够将 AJAX 与live应用事件的方法结合使用(请参阅文档此处)。这种方法称为“事件委托”,即使 jQuery 会为你做这件事,你也应该明白发生了什么。根据您使用的 jQuery 版本,您可能会使用delegate而不是live- 本质上是相同的东西。

框架集实际上在 HTML5 中已被弃用——您应该避免使用它们,因为很快它们将在新的用户代理中完全不受支持。请参阅http://www.useit.com/alertbox/9612.html进行冗长的讨论,希望能阻止您考虑这种方法。

这种IFRAME方法是一种技巧。你也许可以让它工作,但你正在将一个方形钉子锤入一个圆孔。

底线,如果您不想直接深层链接到内页,AJAX 是最佳和首选的解决方案。结合事件委托,它确实优于任何旧的或 hacky 的解决方案。而且,一定要使用“渐进增强”的想法——如果有人点击了这些链接并且关闭了 javascript,内容应该仍然加载。这意味着您从常规直接链接开始,然后为那些启用了 javascript 的用户添加花哨的东西。否则,您将关闭一定比例的用户,使其无法访问主页之外的任何内容。

当您使用 AJAX 进行导航时,您仍然需要为不了解单击您网站上的链接或任何其他网站上的链接的用户做好准备。他们将使用浏览器的“返回”按钮并最终返回 Google 而不是最后一页!那是因为他们通过您的网站进行的导航在他们的浏览器中看起来不像是独特的页面。较新的浏览器中有一些工具可以处理这个问题,但细节有点超出了这个答案的范围。查看MDN 上的这篇文章,了解有关操作浏览器历史记录的更多信息。

文档

于 2012-04-06T18:00:07.227 回答