0

正如这里建议和举例说明,范围库可用于突出显示选定的文本。

我无法直接访问要突出显示某些文本的页面,因此我尝试动态加载它:

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. 我该如何纠正这个错误?

4

1 回答 1

2

首先,我建议下载 Rangy 的发布版本并将其放在您的服务器上,而不是直接链接到 SVN 主干中的文件,因为它不像正确的版本那样稳定并且充满日志调用,这会增加代码大小并损害性能并需要 log4javascript,这本身就相当庞大。

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

于 2011-09-22T09:14:05.243 回答