Javascript 无法检测实际页面重新加载

Javascript 无法检测实际页面重新加载,javascript,jquery,html,local-storage,session-storage,Javascript,Jquery,Html,Local Storage,Session Storage,我正在使用javascript中的套接字来发送数据。下面是代码片段 socket.on('my response', function(msg) { $('#log').append('<p>Received: ' + msg.data + '</p>'); /* if (window.performance) { console.info("window.performance work's fine on this browse

我正在使用javascript中的套接字来发送数据。下面是代码片段

socket.on('my response', function(msg) {
    $('#log').append('<p>Received: ' + msg.data + '</p>');
    /*
    if (window.performance) {
        console.info("window.performance work's fine on this browser");
    } 
    if (performance.navigation.type == 1) {
        console.info( "This page is reloaded" );
    } else {
        console.info( "This page is not reloaded");
    } */
    document.getElementById('div_id').innerHTML += msg.data + "<br>";
});
socket.on('my response',函数(msg){
$(“#log”).append(“接收:”+msg.data+“

”); /* if(窗口性能){ console.info(“window.performance工作在这个浏览器上很好”); } if(performance.navigation.type==1){ console.info(“此页面已重新加载”); }否则{ console.info(“此页面未重新加载”); } */ document.getElementById('div_id')。innerHTML+=msg.data+“
”; });
问题是,我在div上显示的数据在重新加载页面后会被清除。我想保留数据并继续从
msg.data
添加数据,即使在重新加载网页之后也是如此。我怎样才能做到这一点?我试图使用上面代码段中的注释部分检测页面重新加载,但每次我收到
msg
时,它都会将其检测为页面重新加载事件

更新1


如果检测重新加载事件并使用
会话存储
是最好的方法,那么我可能必须强调我的主要问题,即检测重新加载事件。它正在打印
每次我在
msg.data
中获取数据时,都会重新加载此页面(使用代码段的注释部分检测页面重新加载事件)。我想检测我从代码的其他模块中使用的唯一手动重新加载和
窗口.location.reload

您可以检测页面加载事件,然后只保存您获得的数据,直到触发页面刷新,然后用追加的内容填充它。。例如,但更好的方法是检测文档是否准备就绪。因为这样你就不必像stavm刚才说的那样等待css和图像加载了

//store data first 
$( document ).ready(function() {
    // your code here
});

常用的方法是缓存数据。您可以将msg.data缓存到
localStorage
,重新加载时,您首先尝试从localStorage获取数据,如果有,则显示它;然后,保持套接字连接并进行更新。

您的代码很好,它可以检测到您想要的内容。
但是javascript变量在重新加载页面后会被清除,这是自然的、不可避免的

您可以使用HTML5本地存储或Cookie,每种都有自己的优缺点

请参考以下链接:

逻辑:

$(function() {
  if(// This page is **not reloaded** ) {
   // **clear** local storage / cookies
  }

  //load / append data to **local storage / cookies**
  //populate data **from local storage / cookies**
});

试试这样的

function reloadFunction() {
  //set property in local storage;
  window.location.reload();
}

$(function() {
  if( // local storage property exists) {
   // reloaded by code
   // clear local storage property;
  } else {
    // reloaded manually
  }
});

在服务器端,创建一个带有增量ID的var,并将其发送给客户端。每次重新加载时,将此变量与客户端上的变量进行比较。

将其固定在标记中,将数据放入会话存储,在文档读取时将会话存储与div的内容进行比较。我的主要问题是检测网页的重新加载事件。我尝试用各种方式检测,但正如我在问题中提到的,它检测套接字的
我的响应
事件也作为页面重新加载事件。如何避免这种情况?我会使用
document.ready
。等待CSS、图像和所有其他内容都没有意义assets@phanny因为sockets.on会触发页面重新加载事件afaik。这就是它被检测到的原因。它没有按我希望的那样工作。它正在显示
每次我收到
msg.data
时,都会重新加载此页面。我希望它只检测手动重新加载和
window.location.reload()
,这是我在代码的其他各个模块中拥有的。在调用
window.location.reload()之前在本地存储中设置一个值,如果在页面加载时它存在,这意味着你的代码完成了它。加载页面后清除该值。如果有人刷新该值,则在加载页面时该值不存在。