0

私は、prototype.js ライブラリに依存する古い検証フォームを持っています。

残念ながら、prototype.js ライブラリへの参照をページに含めることはできません。私はそのフォームのコードを制御しません。

これを必要とするページを編集する以外に、これをロードするという問題にどのようにアプローチしますか? つまり、私が管理している別の JavaScript ライブラリからライブラリをロードする必要があります。説明させてください。

フォームのある各ページには、次のインクルード スクリプトがあります。

<script src="http://domain/validationScript.js"
    type="text/javascript"></script>

そして、スクリプトの中で私はこのようなことを考えていました...

document.write(unescape(
    "%3Cscript src='//ajax.googleapis.com/ajax/libs/prototype/1.6.1/prototype.js' type='text/javascript'%3E%3C/script%3E"
  ));

prototype.jsただし、スクリプトの前にロードされません。

私は何を間違っていますか?


わかりました。ページにインクルードを書き込んでいるスクリプトでロードされたスクリプトを使用できないという競合状態があることは、DOM シーケンスで明らかです。

しかし、ロードしているライブラリからコードを実行する必要があるスクリプトからライブラリをロードするにはどうすればよいでしょうか?

4

2 に答える 2

1

DOMで新しいスクリプト要素を生成します。次の時点で、スクリプト要素を追加できます。

このポイントは、現在のスクリプト要素の直後です。

現在のスクリプト要素のコードは、現在の要素の実行が終了するまでロードされないため、使用できません。

jQueryを使用しているのでgetScript()、を使用できます。これにより、コールバックメソッドを渡すことができます。動的にロードされたスクリプトに依存するコードをコールバックに移動します。

于 2012-10-08T16:01:52.540 に答える
-1

スクリプトを dom の先頭に追加する必要があります。

var headID = document.getElementsByTagName("head")[0];         
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://ajax.googleapis.com/ajax/libs/prototype/1.6.1/prototype.js';
headID.appendChild(newScript);
于 2012-10-08T15:54:19.800 に答える