试图找到一种方法来保持我的聊天div区域不会刷新和烦人地滚动到底部。在搜索了我能想到的唯一解决方案之后,将全局设置为某个值并在onfocus时更改它并返回onblur。
javascript从来都不是我最强的领域,我认为它可能只是我。
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。
答案 0 :(得分:0)
&#34; usertalk&#34;在执行时不存在,因此附加事件处理程序失败。将事件处理程序放在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。
答案 1 :(得分:0)
我显然不能在div区域进行onfocus或onblur事件?
在尝试了所有可能的方法来使这些事件发挥作用并改变一个值后,我不知道如何设置为全局而不猜测直到成功,我做了一个输入按钮来启用/禁用我的自动updateChat函数并设置值在我隐藏的HTML格式中。
我也找到了像jshint.com这样有用的网站来诊断可能的错误。抱歉没有意识到