0

下面是我的javascript。

Init() 被调用onload。不同的观察firefoxchrome

firefox:它工作正常。Changed-sending如果发生任何事件(鼠标移动、向上、向下),则会发出警报,如果Not Changed没有发生任何事件,则会发出警报。

但是在chrome:无论我是否不移动鼠标,我总是会 Changed-sending保持警惕。这里有什么问题。

请帮忙。

var state="false";
function Init () {
if (document.addEventListener) {  
alert("here");
document.addEventListener ("mousedown", function () {ChangeState ()}, false);
document.addEventListener ("mouseup", function () {ChangeState ()}, false);
document.addEventListener ("mousemove", function () {ChangeState ()}, false);
document.addEventListener ("keydown", function () { ChangeState ()}, false);
document.addEventListener ("scroll", function () {ChangeState ()}, false);
}
setInterval(function(){ myFunction();},7000);
}


function myFunction () {
if(state=="true"){
var xhr = getXMLHttpRequest();
xhr.open("GET","http://www.google.com", true);
alert('Changed-sending');
xhr.send();
state="false";
}else{
alert('Not Changed');
}
}

function ChangeState () {
state="true";
}

function getXMLHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}else {  
try { 
return new(ActiveXObject)("MSXML2.XMLHTTP.3.0");
} catch (e) {
alert("aaa22333"); 
log("browser doesn support AJAX."); 
return null;  } }  }
4

1 回答 1

0

即使没有更改“true”和“false”,我对您提供的代码也没有问题,确实必须添加对 Init 的调用,否则不会发生任何事情。当比较某事是真还是假时,我会使用 === 而不是 ==。

var state=false;
function Init () {
 if (document.addEventListener) {  
  document.addEventListener ("mousedown", function () {ChangeState ()}, false);
  document.addEventListener ("mouseup", function () {ChangeState ()}, false);
  document.addEventListener ("mousemove", function () {ChangeState ()}, false);
  document.addEventListener ("keydown", function () { ChangeState ()}, false);
  document.addEventListener ("scroll", function () {ChangeState ()}, false);
}
setInterval(function(){ myFunction();},1000);
}
Init();

function myFunction () {
 if(state===true){
  var xhr = getXMLHttpRequest();
  xhr.open("GET","http://www.google.com", true);
  console.log('Changed-sending');
  xhr.send();
  state=false;
 }else{
  console.log('Not Changed');
 }
}

function ChangeState () {
 state=true;
}

function getXMLHttpRequest() {
 if (window.XMLHttpRequest) {
  return new XMLHttpRequest();
 }else {  
   try { 
    return new(ActiveXObject)("MSXML2.XMLHTTP.3.0");
   } catch (e) {
    alert("aaa22333"); 
    log("browser doesn support AJAX."); 
    return null;  } }  }
于 2013-06-08T05:58:09.270 回答