2013-09-12 5 views
1

Извинения для оклейки так много коды, это может быть полезно, чтобы выделить вопрос:IE8 говорит: «Объект не поддерживает это свойство или метод» для Date.now()

Client.prototype.connect = function (login, passcode, connectCallback, errorCallback, vhost) { 
     var _this = this; 
     this.connectCallback = connectCallback; 
     if (typeof this.debug === "function") { 
      this.debug("Opening Web Socket..."); 
     } 
     this.ws.onmessage = function (evt) { 
      var arr, c, data, frame, onreceive, _i, _len, _ref, _results; 
      data = typeof ArrayBuffer !== 'undefined' && evt.data instanceof ArrayBuffer ? (arr = new Uint8Array(evt.data), typeof _this.debug === "function" ? _this.debug("--- got data length: " + arr.length) : void 0, ((function() { 
       var _i, _len, _results; 
       _results = []; 
       for (_i = 0, _len = arr.length; _i < _len; _i++) { 
        c = arr[_i]; 
        _results.push(String.fromCharCode(c)); 
       } 
       return _results; 
      })()).join('')) : evt.data; 
      _this.serverActivity = Date.now(); 
      if (data === Byte.LF) { 
       if (typeof _this.debug === "function") { 
        _this.debug("<<< PONG"); 
       } 
       return; 
      } 
      if (typeof _this.debug === "function") { 
       _this.debug("<<< " + data); 
      } 
      _ref = Frame.unmarshall(data); 
      _results = []; 
      for (_i = 0, _len = _ref.length; _i < _len; _i++) { 
       frame = _ref[_i]; 
       switch (frame.command) { 
        case "CONNECTED": 
         if (typeof _this.debug === "function") { 
          _this.debug("connected to server " + frame.headers.server); 
         } 
         _this.connected = true; 
         _this._setupHeartbeat(frame.headers); 
         _results.push(typeof _this.connectCallback === "function" ? _this.connectCallback(frame) : void 0); 
         break; 
        case "MESSAGE": 
         onreceive = _this.subscriptions[frame.headers.subscription]; 
         _results.push(typeof onreceive === "function" ? onreceive(frame) : void 0); 
         break; 
        case "RECEIPT": 
         _results.push(typeof _this.onreceipt === "function" ? _this.onreceipt(frame) : void 0); 
         break; 
        case "ERROR": 
         _results.push(typeof errorCallback === "function" ? errorCallback(frame) : void 0); 
         break; 
        default: 
         _results.push(typeof _this.debug === "function" ? _this.debug("Unhandled frame: " + frame) : void 0); 
       } 
      } 
      return _results; 
     }; 
     this.ws.onclose = function() { 
      var msg; 
      msg = "Whoops! Lost connection to " + _this.ws.url; 
      if (typeof _this.debug === "function") { 
       _this.debug(msg); 
      } 
      _this._cleanUp(); 
      return typeof errorCallback === "function" ? errorCallback(msg) : void 0; 
     }; 
     return this.ws.onopen = function() { 
      var headers; 
      if (typeof _this.debug === "function") { 
       _this.debug('Web Socket Opened...'); 
      } 
      headers = { 
       "accept-version": Stomp.VERSIONS.supportedVersions(), 
       "heart-beat": [_this.heartbeat.outgoing, _this.heartbeat.incoming].join(',') 
      }; 
      if (vhost) { 
       headers.host = vhost; 
      } 
      if (login) { 
       headers.login = login; 
      } 
      if (passcode) { 
       headers.passcode = passcode; 
      } 
      return _this._transmit("CONNECT", headers); 
     }; 
    } 

IE8 дает мне ошибку " Объект не поддерживает это свойство или метод 'для этой строки: _this.serverActivity = Date.now();. Буду признателен, если кто-то может пролить свет на это?

ответ

4

IE8 не содержит Date.now, который был добавлен в ES5 (так, относительно). Вы можете добавить его:

if (!Date.now) { 
    Date.now = function() { 
     return +new Date(); 
    }; 
} 
+0

Отлично, работает как шарм! Спасибо – RuntimeException

+0

@RuntimeException: Добро пожаловать! –

+0

Отличная работа Работает отлично –