2013-02-24 78 views
0
之前使用的ActiveXObject

JSLint的对象到线22:的JSLint - 如何解决它被定义错误

function() { return new ActiveXObject('Msxml2.XMLHTTP'); }, 
的reqTry阵列中

。有什么方法可以更改代码以防止JSLint中出现此错误?

它也反对下一行。

function Ajax() { 
    this.req = null; 
    this.url = null; 
    this.status = null; 
    this.statusText = ''; 
    this.method = 'GET'; 
    this.async = true; 
    this.dataPayload = null; 
    this.readyState = null; 
    this.responseText = null; 
    this.responseXML = null; 
    this.handleResp = null; 
    this.responseFormat = 'text'; // 'text', 'xml', 'object' 
    this.mimeType = null; 
    this.headers = []; 


    this.init = function() { 
    var i = 0; 
    var reqTry = [ 
     function() { return new XMLHttpRequest(); }, 
     function() { return new ActiveXObject('Msxml2.XMLHTTP'); }, 
     function() { return new ActiveXObject('Microsoft.XMLHTTP'); } ]; 

    while (!this.req && (i < reqTry.length)) { 
     try { 
     this.req = reqTry[i++](); 
     } 
     catch(e) {} 
    } 
    return true; 
    }; 
    this.doGet = function(url, hand, format) { 
    this.url = url; 
    this.handleResp = hand; 
    this.responseFormat = format || 'text'; 
    this.doReq(); 
    }; 
    this.doPost = function(url, dataPayload, hand, format) { 
    this.url = url; 
    this.dataPayload = dataPayload; 
    this.handleResp = hand; 
    this.responseFormat = format || 'text'; 
    this.method = 'POST'; 
    this.doReq(); 
    }; 
    this.doReq = function() { 
    var self = null; 
    var req = null; 

    if (!this.init()) { 
     alert('Could not create XMLHttpRequest object.'); 
     return; 
    } 
    req = this.req; 
    req.open(this.method, this.url, this.async); 
    if (this.method == "POST") { 
     this.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    } 
    if (this.method == 'POST') { 
     req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    } 
    self = this; 
    req.onreadystatechange = function() { 
     var resp = null; 
     self.readyState = req.readyState; 
     if (req.readyState == 4) { 

     self.status = req.status; 
     self.statusText = req.statusText; 
     self.responseText = req.responseText; 
     self.responseXML = req.responseXML; 

     switch(self.responseFormat) { 
      case 'text': 
      resp = self.responseText; 
      break; 
      case 'xml': 
      resp = self.responseXML; 
      break; 
      case 'object': 
      resp = req; 
      break; 
     } 

     if (self.status > 199 && self.status < 300) { 
      if (!self.handleResp) { 
      alert('No response handler defined ' + 
       'for this XMLHttpRequest object.'); 
      return; 
      } 
      else { 
      self.handleResp(resp); 
      } 
     } 

     else { 
      self.handleErr(resp); 
     } 
     } 
    }; 
    req.send(this.dataPayload); 
    }; 
    this.abort = function() { 
    if (this.req) { 
     this.req.onreadystatechange = function() { }; 
     this.req.abort(); 
     this.req = null; 
    } 
    }; 
    this.handleErr = function() { 
    var errorWin; 
    // Create new window and display error 
    try { 
     errorWin = window.open('', 'errorWin'); 
     errorWin.document.body.innerHTML = this.responseText; 
    } 
    // If pop-up gets blocked, inform user 
    catch(e) { 
     alert('An error occurred, but the error message cannot be' + 
     ' displayed because of your browser\'s pop-up blocker.\n' + 
     'Please allow pop-ups from this Web site.'); 
    } 
    }; 
    this.setMimeType = function(mimeType) { 
    this.mimeType = mimeType; 
    }; 
    this.setHandlerResp = function(funcRef) { 
    this.handleResp = funcRef; 
    }; 
    this.setHandlerErr = function(funcRef) { 
    this.handleErr = funcRef; 
    }; 
    this.setHandlerBoth = function(funcRef) { 
    this.handleResp = funcRef; 
    this.handleErr = funcRef; 
    }; 
    this.setRequestHeader = function(headerName, headerValue) { 
    this.headers.push(headerName + ': ' + headerValue); 
    }; 

} 

回答

3

在JavaScript中,全局变量实际上是全局对象的属性。在浏览器中,全局对象是window。所以,你可以写:由windows属性设置为true

/*global ActiveXObject: false */ 

或全局:window.ActiveXObject

+0

窗口工程,谢谢 – 2013-02-24 21:40:40

相关问题