【发布时间】:2012-02-27 03:51:37
【问题描述】:
如果这是一个新手问题,我很抱歉,但我也不知道要搜索什么。浏览网站时如何保留前一页的内容?例如,facebook 上的右侧活动/聊天栏。转到不同的配置文件时,它似乎没有刷新;它不是 iframe,也不是 ajax(我可能是错的)。
谢谢,
【问题讨论】:
标签: javascript html web
如果这是一个新手问题,我很抱歉,但我也不知道要搜索什么。浏览网站时如何保留前一页的内容?例如,facebook 上的右侧活动/聊天栏。转到不同的配置文件时,它似乎没有刷新;它不是 iframe,也不是 ajax(我可能是错的)。
谢谢,
【问题讨论】:
标签: javascript html web
我相信您在 Facebook 中看到的并不是实际的“页面加载”,而是对 AJAX 或 AHAH 的巧妙使用。
所以...假设您有一个网页。它包含链接。这些链接中的每一个都有一个“钩子”——当链接被点击时执行的一段 JavaScript。
如果您的浏览器不支持 JavaScript,则链接会像在老式页面上正常运行一样,并会加载另一个页面。
但是如果 JavaScript 被打开,那么钩子运行的代码不会导航到 HREF,而是会导致将请求放置到不同的 URL,该 URL 只吐出应该用来替换已经存在的 DIV 的 HTML显示在页面的某处。
HTML 中仍然有一个真正的链接,以防 JS 无法正常工作,因此您看到的 HTML 看起来应该是这样。尝试在浏览器中禁用 JavaScript,看看 Facebook 是如何工作的。
像这样的实时更新在 Web 2.0 应用程序中随处可见,从 Facebook 到 Google Docs 到 Workflowy 到 Basecamp 等等。“更好”的工具尽可能提供底层 HTML 链接,以便没有 JavaScript 的用户仍然可以获得完整的应用程序的使用。 (这被称为Progressive Enhancement or Graceful degradation,这取决于您的观点。)当然,没有人会期望 Google Docs 可以在没有 JavaScript 的情况下工作。
【讨论】:
对于像 Facebook 这样的聊天,您必须将整个对话保存在服务器端(例如在数据库中)。然后,当用户更改页面时,您可以在服务器端(使用 PHP)恢复对话状态,或者像聊天一样查询服务器(Javascript + AJAX)。
【讨论】:
这不是在 Javascript 中完成的。这需要使用您的后端脚本语言来完成。
例如,在 PHP 中,您使用 Sessions。由服务器端脚本设置的变量可以在服务器上维护并使用 cookie 绑定在一起(在多个请求/命中之间)。
【讨论】:
一个非常有用的技巧是在 Firefox 中运行HTTPFox,这样您就可以在从一个页面浏览到下一个页面时实际监控正在发生的事情。您可以查看 POST/Cookies/Response 选项卡,并查看页面上类似 AJAX 的行为正在调用哪些 Web 方法。在这样做时,您通常可以推断出数据是如何流入和流出页面的,即使您本身无权访问服务器端代码。
至于您的具体问题的答案,列出的方法太多(cookie、服务器端持久性,如会话或数据库写入、简单的表单 POST、.net 中的 VIEWSTATE 等)。
【讨论】:
您可以通过按 ctrl+shift+T 打开您上次关闭的网页。现在您可以随意保存内容。示例:如果我关闭了与 document sharing 相关的网页,现在我在旅行网页上。然后我按 ctrl+shift+T。现在我的最后一个网页会自动打开。此功能适用于 Mozilla、e explorer、opera 等。希望这个答案对你有所帮助。
【讨论】: