今日、同じ JavaScript ライブラリを 2 回インクルードすることの危険性に関する質問を読みました。リンクのクリックで呼び出される関数の単純なアラートでそれをテストする小さなプロジェクトを作成しました。そのようなクリックにイベントハンドラーをバインドするのにjqueryを使用しました:
ケース1
Javascript:
$(document).ready(function () {
$("#TestLink").click(function() {
alert("Message");
});
});
HTML:
<p>
<a id="TestLink">Click here</a>
</p>
リンクをクリックすると、メッセージが 2 回表示されます。スクリプトへの参照が 2 回追加されているため、jquery はイベント ハンドラーを 2 回バインドすることを理解しています。
別のケースでは、コードを次のように変更します。
ケース 2
Javascript:
function showMessage() {
alert("Message");
}
HTML:
<script type="text/javascript" src="@Url.Content("~/Scripts/Test.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/Test.js")"></script>
<p>
<a onclick="showMessage();" id="TestLink">Click here</a>
</p>
リンクをクリックすると、スクリプトを 2 回含めても、メッセージは 1 回だけ表示されます。
私の質問:
ケース 1 で、同じスクリプトが複数回追加された場合、イベント ハンドラーを 2 回バインドするプロセスはどのように行われますか? 同じスクリプトが複数回追加されたときのイベントのフックについて詳しく知りたいだけです。記事、参考文献など...
ケース 2 では、関数を呼び出すために使用するスクリプトを選択する必要がある競合をブラウザがどのように解決しますか?