动态加载rangy库

时间:2011-09-21 20:44:34

标签: selection dynamic rangy

根据建议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);
}

然而,当我调用init方法时 rangy.init(); 我获得rangy is undefined。 我该如何更正此错误?

1 个答案:

答案 0 :(得分:2)

首先,我建议下载Rangy的发布版本并将其放在您的服务器上而不是直接链接到SVN中继中的文件,这些文件不如正确版本稳定并且充满了日志记录调用,增加代码大小并损害性能并需要log4javascript,这本身就相当笨重。

其次,像这样动态加载脚本会异步加载它们,这意味着单个脚本可以在它所依赖的先前脚本完成加载之前完成加载和执行。脚本加载和获取依赖权是一个棘手的领域。我不是这个领域的专家,但是为了它的价值,我建议使用像LABjs这样的脚本加载器来完成它。