この記事では、主にJavaScriptファイルを動的にロードする2つの方法を紹介します。興味のある友達はそれを参照できます。
1つ目は、Ajaxメソッドを使用して、スクリプトファイルコードを背景から前景にロードし、eval()を介して読み込まれたコンテンツのコードを実装することです。 2番目のタイプは、スクリプトタグを作成し、SRC属性を構成し、スクリプトタグをページのヘッドに挿入してJSをロードすることです。これは、ヘッドに<スクリプトsrc = "..."> </script>を作成するのと同等ですが、このスクリプトタグはJS SRCを使用して作成されます。
たとえば、CallBakc.jsを動的にロードする場合は、スクリプトタグが必要です。
コードは次のとおりです。コードを次のようにコピーします。
次のコードは、JSを介してこのタグを作成する方法です(そしてそれを頭に追加します):
コードは次のとおりです。
var head = document.getElementsByTagname( 'head')[0]; var script = document.createelement( 'script'); script.type = 'text/javascript'; script.src = 'call.js'; head.AppendChild(スクリプト);
call.jsがロードされたら、その中のメソッドを呼び出す必要があります。ただし、Header.AppendChild(スクリプト)の後、すぐにJSに電話することはできません。ブラウザはこれを非同期にロードするため、いつロードされるかわかりません。ただし、helper.jsがイベントを聴いてロードしているかどうかを判断できます。 (call.jsにコールバックメソッドがあるとします)コードは次のとおりです。
var head = document.getElementsByTagname( 'head')[0]; var script = document.createelement( 'script'); script.type = 'text/javascript'; script.onreadystatechange = function(){if(this.readystate == 'complete')callback(); } script.onload = function(){callback(); } script.src = 'helper.js'; head.AppendChild(スクリプト);onreadyStateChangeはIEで使用されているため、2つのイベントリスニング機能を設定しますが、オンロードはGecko、WebKitブラウザー、オペレーターによってサポートされています。実際、this.readystate == 'complete'はあまりうまく機能しません。理論的には、状態の変更は次のとおりです。
1.単一化
2.ロード
3.ロード
4.対話
5.complete
しかし、一部の州はスキップされます。 IE7での経験によると、ロードと完成の1つだけを取得でき、両方とも表示されません。その理由は、キャッシュからの読み取りが州の変化に影響するか、その他の理由に影響するかを判断するためかもしれません。判断条件をこれに変更するのが最善です。ReadyState== 'ロード' || this.readyState == 'Complete'
jQueryの実装を参照して、最終的に次のように実装しました。コードは次のとおりです。
var head = document.getElementsByTagname( 'head')[0]; var script = document.createelement( 'script'); script.type = 'text/javascript'; script.onload = script.onreadystatechange = function(){if(!this.readystate || this.readystate === "loaded" || this.readystate === "complete"){help(); // IE Script.Onload = script.onreadystatechange = nullでメモリリークを処理します。 }}; script.src = 'helper.js'; head.AppendChild(スクリプト);helper.jsの最後にhelp()to help()を記述できる別の簡単な状況があるため、helper.jsがロードされた後にhelp()を自動的に呼び出すことができるようにします。もちろん、最終的には、これはアプリケーションに適していません。
また、注:
1.スクリプトタグSRCはドメイン間のリソースにアクセスできるため、この方法はAJAXをシミュレートし、AJAXクロスドメインアクセスの問題を解決できます。
2. AJAXで返されたHTMLコードにスクリプトが含まれている場合、HTMLのスクリプトをinnerHTMLで直接挿入することは、HTMLでスクリプトを機能させることができません。 jquery()。html(html)の元のコードを大まかに見てみました。 jQueryは、最初に渡されたパラメーターを解析し、スクリプトコードをストリップし、スクリプトタグを動的に作成します。 jQueryで使用されるHTMLメソッドは、スクリプトが含まれている場合にDOM HTMLに追加され、実行できます。のように:
コードコピーは次のとおりです。JQuery( "#content")。html( "<script> alert( 'aa'); <// script>");
上記は、JavaScriptファイルを動的にロードする方法です。みんなの学習に役立つことを願っています。