javascript帮助;暂停自动刷新
试图找到一种方法来防止我的聊天室区域刷新并令人烦恼地滚动到底部。在搜索完我能想到的唯一解决方案后,就是将全局设置为某个值,并在使用onfocus和onblur时更改它 javascript从来都不是我最擅长的领域,我想可能就是我自己javascript帮助;暂停自动刷新,javascript,ajax,scroll,refresh,Javascript,Ajax,Scroll,Refresh,试图找到一种方法来防止我的聊天室区域刷新并令人烦恼地滚动到底部。在搜索完我能想到的唯一解决方案后,就是将全局设置为某个值,并在使用onfocus和onblur时更改它 javascript从来都不是我最擅长的领域,我想可能就是我自己 var chatarea = document.getElementById('usertalk'); window.onload= function() { chatarea.scrollTop = chatarea.scrollHeight; }
var chatarea = document.getElementById('usertalk');
window.onload= function() {
chatarea.scrollTop = chatarea.scrollHeight;
}
var chatfocus = false;
chatarea.onfocus=function(){ chatfocus = true; }
chatarea.onblur=function(){ chatfocus = false; }
setInterval("updateChat()", 5000);
function updateChat(){
var ajaxRequest;
ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
if(chatfocus === false){
chatarea.innerHTML = ajaxRequest.responseText;
chatarea.scrollTop = chatarea.scrollHeight;
}
}
}
ajaxRequest.open("GET", "comments.php?t=<?php echo $topicc; ?>", true);
ajaxRequest.send(null);
}
如果javascript将错误打印出来,我可能会找到它,或者搜索到足够的内容来理解。我尝试了许多不同的变体,并将其分配给窗口,但脚本仍然不想工作。我最终放弃了,继续使用php,现在我可以调用一个编辑表单来替换我想要自动刷新的同一个div中的注释,并且需要暂停这个脚本。但再一次,我不知道在js中不提问就能实现什么 usertalk在执行时不存在,因此附加事件处理程序失败。将事件处理程序置于onload函数中:
var chatarea = null;
window.onload= function() {
chatarea = document.getElementById('usertalk');
chatarea.scrollTop = chatarea.scrollHeight;
chatarea.onfocus=function(){ chatfocus = true; }
chatarea.onblur=function(){ chatfocus = false; }
}
编辑:没有意识到您在updateChat中也引用了chatarea,请在onload的作用域之外将其定义为null,但仅在页面加载后使用getElementById。我显然无法在div区域上发生onfocus或onblur事件 在尝试了所有可能的方法使这些事件正常工作并更改了一个值之后,我不太知道如何设置为全局值,直到成功为止,我都没有猜测。我制作了一个输入按钮来启用/禁用我的auto updateChat函数,并在隐藏的html表单中设置该值
我还找到了一些有用的网站,比如jshint.com,来诊断可能的错误。抱歉没有意识到如果设置一个新对象,脚本仍然不想做任何事情。getelementbyid'usertalk'而不是使用chatarea对象,并在我的updateActivity函数中删除我的if chatfocus==false。它的行为与正常情况类似,因此我相信已修复了错误的第一部分。嗯,不太确定。在onload和blur/focus事件中添加一些警报-哪些函数实际上正在启动?起初没有什么需要警报的,然后我注意到我的页面页脚有一个window.onload。我想不能超过一个?注释掉页脚脚本并触发onload警报,但onfocus和onblur不会发出警报