2010-12-01 4 views
1

html5 LeanBack Player로 게임하고 있으며 javascritpts 페이지에서만 잘 작동합니다. 내가 3 프로젝트를 레일 이러한 자바 스크립트 파일을 추가한다면 그때 린백 플레이어의 자바 스크립트 파일에 오류가 발생합니다 :두 개의 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’ 

기능 LBPlayer.prototype.resolveTextPlainSubs에.

레일에있는 원시 프로토 타입과 충돌했기 때문에 추측했는데 해결 방법을 모르겠습니다. 실제로는 Array.prototype의 확장 프로토 타입과 충돌의 감사

답변

1

: 그것을 해결하기 위해

// 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 = ""; 

당신은 루프에 대한 간단한와 for(var s in srt)를 교체해야합니다 :

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

우수함! 감사. 공식적인 설명은 http://www.prototypejs.org/api/array입니다. – megas

관련 문제