2011-09-21 2 views
0

제안 된 here 및 예시 된 here과 같이 rangy 라이브러리를 사용하여 선택한 텍스트를 강조 표시 할 수 있습니다.동적로드 라이브러리

내가 텍스트를 강조 표시 할 페이지에 직접 액세스 할 수없는, 그래서 동적으로로드하려고 해요 :

var HLScripts=new Array(
'lib/log4javascript.js', 
'src/js/core/core.js', 
'src/js/core/dom.js', 
'src/js/core/domrange.js', 
'src/js/core/wrappedrange.js', 
'src/js/core/wrappedselection.js', 
'src/js/modules/rangy-serializer.js', 
'src/js/modules/rangy-cssclassapplier.js', 
'src/js/modules/rangy-selectionsaverestore.js', 
'src/js/modules/rangy-highlighter.js' 
) 

for(var i=0; i<HLScripts.length; i++) { 
var e=document.createElement('script'); 
e.type='text/javascript'; 
e.src='http://rangy.googlecode.com/svn/trunk/'+HLScripts[i]; 
document.body.appendChild(e); 
} 

을 그러나, 나는 rangy.init(); 내가 얻을 init 메소드를 호출 할 때 rangy is undefined. 어떻게이 오류를 해결할 수 있습니까?

답변

2

먼저 Rangy의 릴리스 빌드를 다운로드하여 SVN 트렁크의 파일에 직접 연결하는 대신 Rangy의 릴리스 빌드를 다운로드하는 것이 좋을 것입니다. SVN 트렁크는 적절한 릴리스만큼 안정적이지 않으며 로깅 호출이 가득합니다. 코드 크기가 증가하고 성능이 저하되고 log4javascript가 필요합니다.

두 번째로 동적으로 스크립트를 로딩하면 비동기 적으로로드되므로 개별 스크립트가 종속 된 이전 스크립트가로드되기 전에 실행되고 완료 될 수 있습니다. 스크립트로드 및 종속성 확보는 약간 까다로운 영역입니다. 나는이 분야의 전문가는 아니지만, 가치가있는 부분에 대해서는 LABjs과 같은 스크립트 로더를 사용하는 것이 좋습니다.

관련 문제