在浏览网站时,网站的某个部分如何保持显示(有点像只加载一次)
How can a section of a website stay displayed (kind of like loaded only once) when navigating the website?
我正在制作一个有多个页面的网站。所有的页面都有相同的顶部,导航栏和页脚。当导航到不同的页面时,唯一改变的是页面主体。我想知道的是如何在导航到不同的页面时只加载页面的主体,但保持顶部,导航栏和页脚显示,这样你会得到的效果是除了主体之外什么都没有改变。
你有两个选择:
- iframes—其中页面主体是
iframe
元素,您更改iframesrc
以加载新页面 - AJAX - JavaScript使用XMLHttpRequest获取新页面的HTML并将其动态加载到body中,而无需重新加载页面
对于这个问题,老派的答案是使用框架。框架完全是你想要的;您有一个页面,其中您为站点的顶部、底部和主窗格指定了单独的HTML文件。导航只是将不同的页面加载到"主"框架中。然而,由于各种原因,这并没有真正做到:它看起来很笨重,有奇怪的滚动行为,并且在链接到其他网站时很烦人。
更好的方法可能是通过AJAX加载主内容。您将显示一个只有页眉和页脚的页面,然后使用Javascript动态地从服务器上拉出正确的页面,并将其内容插入页面中的占位符div中。导航到其他页面需要运行JS代码来加载链接的内容,并替换占位符中的所有内容。这也有缺点:你需要为历史记录添加特殊的处理(例如,使后退按钮按预期工作)和深度链接(例如,使书签加载正确的内容)。
我建议两者都不做。更好的方法是在所有页面中只包含页眉和页脚内容。有几种方法可以做到这一点,而不必在很多地方重复HTML代码:如果您动态生成页面,请查看layouts,它允许您为所有页面指定可重用的模板。确切的方法取决于您使用的框架,但作为一个示例,下面是如何在Rails中实现它。如果您的页面是静态的(例如,您上传到服务器的一些HTML文件),您将希望做类似的事情,但不是动态生成页面,而是使用静态HTML生成器并编译页面。它允许您在一个地方指定页眉和页脚,然后在单独的文件中指定内容。在编辑它们之后,运行一个命令,它将创建输出文件,其中每个文件都包含页眉和页脚的副本。然后你上传它们。例如,
我正在考虑这个自己的另一个原因,但我在想的是,你可以附加一个javascript事件处理程序到所有锚标记与'href'属性。在触发这些事件时,它将调用XHR(纯js)或$.get(jquery)到目标,转储包含动态主体的div内容,并交换新内容。
您必须考虑将表单提交也移动到XHR方法。
一个已经在使用的例子是www.facebook.com。当您四处单击时,页面会像往常一样刷新。当您打开聊天并开始交谈时,页面开始通过某种Ajax方法重新加载。
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 优化的方法;标题“;只发送一次POST请求即可访问网站
- PHP 重新加载网站一次
- 在javascript中,在整个网站中仅自动打开一次模态
- 在浏览网站时,网站的某个部分如何保持显示(有点像只加载一次)
- 使我的网站只显示一次HTML
- qTip2 -加载所有的AJAX网站一次
- 如何在没有认证的情况下在网站上投票一次