2010-12-01 7 views
1

Je joue avec html5 LeanBack Player et il fonctionne bien lorsque sur la page seulement ses javascritpts. Mais si j'ajoute ces fichiers javascript sur les rails 3 projet alors j'obtiens l'erreur dans le fichier javascript de Leanback joueur:Conflit de deux fichiers javascript

Uncaught TypeError: Object function each(iterator, context) { 
    var index = 0; 
    try { 
    this._each(function(value) { 
     iterator.call(context, value, index++); 
    }); 
    } catch (e) { 
    if (e != $break) throw e; 
    } 
    return this; 
} has no method ‘split’ 

dans LBPlayer.prototype.resolveTextPlainSubs fonction. Je l'ai deviné à cause d'un conflit avec le prototype natif dans les rails mais je ne sais pas comment le résoudre. Merci

Répondre

1

En effet, il est un conflit avec Prototypes extension de Array.prototype:

// leanbackPlayer.js @941 
srt = srt.split('\n\n'); 
var i = 0; var isSub = false; 
this.vars.subs[lang] = {}; 
this.vars.subs[lang].label = {}; 
this.vars.subs[lang].label = label; 
this.vars.subs[lang].track = {}; 

// Error: using for in over an array is just stupid 
//  not even using hasOwnProperty is outright pitiful 
for(var s in srt) { 

    // this will also yield `each` but that's a function which has no .split() method 
    var st = srt[s].split('\n'); 
    var time; var j; 
    if(st.length >= 2) { 
     var t = ""; 

Pour corriger, vous devez remplacer le for(var s in srt) par une simple boucle:

for(var e = 0, el = srt.length; e < el; e++) { 
    var st = srt[e].split('\n'); 
    var time; var j; 
    if(st.length >= 2) { 
     var t = ""; 
     ... 
} 
+0

Great! Merci. Voici l'explication officielle http://www.prototypejs.org/api/array – megas

Questions connexes