【问题标题】:Avoiding content reload without use of frames/iframes避免在不使用框架/iframe 的情况下重新加载内容
【发布时间】:2011-04-17 11:36:33
【问题描述】:
有很多理由要避免使用<iframe>s(实际上也是一般的框架),但最好的选择是什么? (此处的目的是避免重新加载整页)。
例如,Facebook 似乎保持其顶部栏和侧边菜单(在大多数情况下)保持完整,并且非常罕见地重新加载整个页面。
在几乎不知道使用什么作为搜索词的情况下搜索解释使我缺乏洞察力,因此我认为最好在这里提出这个问题。这都是 Ajax,还是还有更多?
【问题讨论】:
标签:
javascript
html
ajax
asynchronous
reload
【解决方案1】:
AJAX
更传统的方法是“AJAX”。简而言之,您的 javascript 代码可以在某个时间(每 x 秒)或在用户事件发生时(例如单击按钮)从服务器请求特定内容。
jQuery 中的一个非常基本的实现如下所示:
函数 updateShouts(){
// 假设我们有#shoutbox
$('#shoutbox').load('latestShouts.php');
}
setInterval("updateShouts()", 10000);
这将使用从 latestShouts.php 检索到的任何内容每 10 秒更新一个 id 为“shoutbox”的 div。
更高级的实现将涉及仅检索 JSON 或 XML 等格式的数据(而不是演示文稿),然后使用接收到的数据更新现有的 HTML 值。
WebSockets
最近,浏览器开始支持称为WebSockets 的东西。 WebSockets 允许您在浏览器和服务器之间保持双向连接打开,它允许服务器将信息推送到浏览器而无需浏览器请求。
这在很多方面都更有效;主要原因是您不必每 x 秒浪费一次服务器调用来检查数据是否存在。 WebSockets 允许您在服务器可用时立即显示来自服务器的信息。
希望对你有帮助..
干杯!
【解决方案2】:
使用 ajax 注入部分内容是您最好和最简单的选择 - 我也推荐 jquery。