今天,我读到一个关于两次包含同一个 JavaScript 库的危险的问题。我创建了一个小项目,通过单击链接调用的函数中的简单警报来测试它。我使用 jquery 来帮助我将事件处理程序绑定到单击,如下所示:
情况1
Javascript:
$(document).ready(function () {
$("#TestLink").click(function() {
alert("Message");
});
});
html:
<p>
<a id="TestLink">Click here</a>
</p>
现在,当我单击链接时,消息会显示两次。我知道 jquery 绑定了一个事件处理程序两次,因为对脚本的引用已被添加了两次。
在另一种情况下,我将代码更改为如下所示:
案例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 中,浏览器如何解决必须选择使用哪个脚本来调用函数的冲突?