今天,我讀了一個關於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>
現在,當我點擊鏈接時,消息i s顯示兩次。我知道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中,瀏覽器如何解決衝突,必須選擇使用哪個腳本來調用函數?
+1。在情況2中,沒有衝突要解決; showMessage的第二個聲明會覆蓋第一個,所以javascript引擎只有一個showMessage可供選擇。 – Chris 2012-07-31 14:18:54