0

ここで提案され、ここで例示されているよう、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. このエラーを修正するにはどうすればよいですか?

4

1 に答える 1

2

まず、SVN トランク内のファイルに直接リンクするよりも、Rangy のリリース ビルドをダウンロードしてサーバーに配置することをお勧めします。SVN トランク内のファイルは適切なリリースほど安定しておらず、ロギング コールが多く、コード サイズが大きくなります。パフォーマンスが低下し、log4javascript が必要になりますが、これはそれ自体がかなりかさばります。

第 2 に、このようにスクリプトを動的にロードすると、それらが非同期的にロードされます。つまり、個々のスクリプトは、それが依存する前のスクリプトのロードが完了する前に、ロードを完了して実行される可能性があります。スクリプトの読み込みと依存関係の取得は、少しトリッキーな領域です。私はこの分野の専門家ではありませんが、そのためにはLABjsなどのスクリプト ローダーを使用することをお勧めします。

于 2011-09-22T09:14:05.243 に答える