【发布时间】:2012-07-29 08:02:24
【问题描述】:
今天,我读到一个关于 the danger in including the same JavaScript library twice 的问题。我创建了一个小项目,通过单击链接调用的函数中的简单警报来测试它。我使用 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>
当我点击链接时,即使我包含了两次脚本,消息也只会显示一次。
我的问题:
在情况1中,同一个脚本被多次添加时,两次绑定事件处理程序的过程是如何完成的?我只想要更多关于事件钩子的详细信息,当一个相同的脚本被添加不止一次时;文章、参考资料等...
在情况2中,浏览器如何解决必须选择使用哪个脚本来调用函数的冲突?
【问题讨论】:
标签: javascript javascript-events