IE8

2010-04-28 17 views
5

के साथ काम करने के लिए jquery.couch.app.js कैसे प्राप्त करें I IE7 और IE8 (सभी संगतता मोड में) और विंडोज 8 अल्टीमेट में IE8 (सभी compatiblity मोड में) में Windows XP SP3 पर इसका परीक्षण किया है और यह विफल रहता है दोनों पर एक ही तरह से। मैं couchapp भंडार से नवीनतम HEAD चला रहा हूं। यह मेरी ओएसएक्स 10.6.3 विकास मशीन पर ठीक काम करता है। मैंने क्रोम 4.1.249.1064 (45376) और फ़ायरफ़ॉक्स 3.6 के साथ विंडोज 7 अल्टीमेट पर परीक्षण किया है और वे दोनों ठीक काम करते हैं। MSIE 8.0; Windows NT मोज़िला/4.0 (संगत: करते हैं दोनों Safari 4 और Firefox 3.6 पर OSX 10.6.3IE8

त्रुटि संदेश

वेबपेज त्रुटि विवरण

उपयोगकर्ता एजेंट है 6.1; ट्राइडेंट/4.0; एसएलसीसी 2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; मीडिया सेंटर पीसी 6.0) टाइमस्टैम्प: बुध, 28 अप्रैल 2010 03:32:55 यूटीसी

संदेश: ऑब्जेक्ट नहीं है 159 चार:: 7 कोड: 0 यूआरआई: http://192.168.0.105:5984/test/_design/test/vendor/couchapp/jquery.couch.app.js

और यहाँ "हमलावर" कोड का सा है, जिनमें Chrome, Firefox और Safari ठीक पर काम करता है इस संपत्ति या विधि रेखा समर्थन करते हैं। तो कहते हैं की विफलता, लाइन है कि फाइल jquery.couch.app.js

157 var qs = document.location.search.replace(/^\?/,'').split('&'); 
    158 var q = {}; 
    159 qs.forEach(function(param) { 
    160 var ps = param.split('='); 
    161 var k = decodeURIComponent(ps[0]); 
    162 var v = decodeURIComponent(ps[1]); 
    163 if (["startkey", "endkey", "key"].indexOf(k) != -1) { 
    164  q[k] = JSON.parse(v); 
    165 } else { 
    166 q[k] = v; 
    167 } 
    168 }); 
+1

IE में अब काम नहीं करता ... * फिक्सिंग के बाद था .. । * –

उत्तर

6

foreach (से qs.forEach() शुरू होता है) एक समारोह है कि हाल ही में जावास्क्रिप्ट विनिर्देश को जोड़ा गया है पर है, इसलिए नहीं सभी ब्राउज़रों यह समर्थन करते हैं।

आप MDC पर इसके बारे में पढ़ सकते हैं: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/forEach

"संगतता" के अंतर्गत, आप एक टुकड़ा है कि foreach() उपलब्ध बनाता मिल जाएगा।

if (!Array.prototype.forEach) 
{ 
    Array.prototype.forEach = function(fun /*, thisp*/) 
    { 
    var len = this.length >>> 0; 
    if (typeof fun != "function") 
     throw new TypeError(); 

    var thisp = arguments[1]; 
    for (var i = 0; i < len; i++) 
    { 
     if (i in this) 
     fun.call(thisp, this[i], i, this); 
    } 
    }; 
} 

तो, उपरोक्त कोड को अपनी स्क्रिप्ट पर कॉपी और पेस्ट करें और प्रत्येक() को काम करना चाहिए।

+0

यह केवल मेरी समस्या को आंशिक रूप से तय करता है क्योंकि मुझे इस प्रश्न के उत्तर में उल्लिखित 'indexOf' जोड़ना पड़ा था। –

0

मैं भी सरणी वस्तु को indexOf() जोड़ने के लिए जहां मुझे लगता है कि इससे पहले कि सुना है यह काम कर पाने के foreach() समस्या

if (!Array.prototype.indexOf) 
{ 
    Array.prototype.indexOf = function(elt) 
    { 
     var len = this.length >>> 0; 

     var from = Number(arguments[1]) || 0; 
     from = (from < 0) 
       ? Math.ceil(from) 
       : Math.floor(from); 
     if (from < 0) 
      from += len; 

     for (; from < len; from++) 
     { 
      if (from in this && 
       this[from] === elt) 
       return from; 
     } 
     return -1; 
    }; 
}