如何在浏览器位置更改时保持 HTML 元素

How to keep HTML Element on Browser Location Change

本文关键字:HTML 元素 浏览器 位置      更新时间:2023-09-26

页面更改位置时有没有办法保留一些HTML元素。就像一个不会重新渲染但保持其状态的div

您可以在Facebook聊天中找到并举例说明,您可以看到聊天窗口在导航到另一个页面时不会更改其位置或InnerHtml

PS :我不知道从哪里开始,所以任何文档将不胜感激。如果解决方案是XHTML而不是HTML5,那就太好

我不知道Facebook聊天是如何工作的,但我知道所有聊天消息都存储在数据库中,因此您可以稍后通过消息访问它们。

我的假设是设置一个会话变量,让Facebook的UI知道你打开了哪些聊天,或者也可能存储在数据库中。无论哪种情况,您都必须使用一些外部脚本才能执行此操作。为了方便起见,假设您将使用 PHP,并将数据存储在 SESSION 变量中。

/* Storing the variable */
$users = array('user123', 'user456', 'user789');
$_SESSION['chat_windows_open'] = $users;
/* Retrieving the values */
foreach($_SESSION['chat_windows_open'] as $chat) {
/* Use $chat to get the username, query the DB for 
the message content, and echo it in whatever form you
wish. */
}

window.location更改时,页面会自动完全重新呈现。所以,从这个角度来看,答案是否定的。但是,这种效果可以通过使用 AJAX .使用 ajax 在页面不重新加载或更改位置(window.location始终相同)时向服务器发出请求。这里有一个很好的链接可以从AJAX开始:

http://www.w3schools.com/ajax/default.asp

如果你仍然希望页面更改它的位置,在你发出ajax请求并更新页面上的内容之后,你可以使用javascript的history.pushState函数。但是,您必须找到一种方法来使其跨浏览器(又名使其在IE中工作)。