【问题标题】:Change web page content in real time without ajax无需ajax即可实时更改网页内容
【发布时间】:2016-01-17 12:28:02
【问题描述】:

在 stackoverflow.com 的 firebug 的帮助下,我突然意识到,当有人接受你的答案时,你的分数突然增加了,而没有任何方法收到任何 Ajax 命中。厉害了,怎么可能?

请提供建议,以便我可以尝试将这种技术应用到我即将进行的项目中。提前致谢。

【问题讨论】:

  • 可能是网络套接字。
  • 如果它可能是 ajax,那么有什么方法可以遵循,这样就不会在 firebug 中追踪它。
  • 它可能正在使用 HTML 5 WebSockets 和 WebWorker 架构。
  • 回到当他们实现一些新的动态特性时,它曾经在新浏览器的控制台中说“websockets 启动”或类似的东西。控制台消息已被删除,但由于 SO 上的某些功能仍然相同,可以肯定地说它正在使用 websockets,可能是带有 node.js 的 socket.io,但谁知道呢?即使没有 ajax,当有人点击某物时更新网站上的数字也应该非常简单,然后只需对数据库进行 ajax 调用以在刷新等时保持数字正确。没有魔法!
  • @SidCool Web Workers 专为多线程而设计。您可以在同一个线程中运行 web socket。

标签: javascript jquery html ajax


【解决方案1】:

确保您已经查看了 net 选项。我有两种方法可以判断。

  1. Web 套接字
  2. iFrame

请看http://www.html5rocks.com/en/features/connectivity & http://html5demos.com/web-socket

但只能在有限的浏览器上运行

将 iFrame 与简单的 get 请求一起使用,不会进行 ajax 调用,但您将能够在 firebug net 上看到它。这是 Facebook 使用的,并且兼容所有浏览器。

【讨论】:

  • 是的,网络套接字是 HTML5 的一部分,只有最新的浏览器才有这个功能。
【解决方案2】:

它在现代浏览器中使用WebSockets 而不是 AJAX XMLHttpRequest。您可以在 meta.stackoverflow.com 上找到有关 Stack Overflow 实施的更多详细信息。

WebSockets 的主要优点是服务器可以在您收到赞成票的那一刻向浏览器发送更新。其他方法,例如 XHR 和隐藏 iframe,需要浏览器定期轮询服务器以获取更新的投票计数。

【讨论】:

  • 是否可以用 CakePHP 或 Codeigniter 来实现?
【解决方案3】:

您可以使用图像提交按钮并提交到显示数字的小型 iframe。

否则,您仍然会在隐藏 iframe 中搞乱,并在隐藏 iframe 中提交或获取帖子。

如果您真的想要一个没有 javascript 的解决方案,那么提交隐藏/小型 iframe 的表单是可行的方法。

【讨论】:

  • 1票。但是如果超过 50% 的页面内容需要更改,并且我打算使用 iframe,那么 google 可能不会抓取我的网页,因为 iframe 不是一个广泛使用的好习惯。不是吗?
  • 是的,但谷歌也不抓取 ajax 内容。如果普通用户查看它,您可以将包含内容的文件的链接放入您的 xml 站点地图中,并重定向到“容器”页面。
  • 谢谢迈克尔,是否有任何可用的教程,以便我可以在普通用户查看站点地图时了解站点地图的创建和重新编辑。
  • support.google.com/webmasters/bin/… 用于创建站点地图,gotfusion.com/tutsdl/frames_breakin.cfm 用于拆分框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多