2011-09-21 40 views
0

如建議here和示例here,rangy庫可用於突出顯示選定的文本。動態加載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); 
} 

然而,當我調用init方法 rangy.init(); 我獲得rangy is undefined。 我該如何糾正這個錯誤?

回答

2

首先,我建議下載Rangy的發佈版本,並將其放到服務器上,而不是直接鏈接到SVN中繼中的文件,這些文件不像正確版本那樣穩定,並且充滿了日誌記錄調用,這會增加代碼的大小和性能,並且需要log4javascript,這本身就相當龐大。其次,像這樣動態加載腳本會異步加載腳本,這意味着單個腳本可能會完成加載並在它所依賴的以前的腳本完成加載之前執行。腳本加載和正確獲取依賴關係是一個棘手的領域。我不是這方面的專家,但是爲了它的價值,我建議使用一個腳本加載器,如LABjs來完成它。