我寫了一個小的javascript函數,它在表單輸入文本字段中觸發onFocus時檢查cookie。Javascript onFocus事件不斷在Google Chrome中觸發 - 它是一個錯誤嗎?
如果找到了cookie,那麼會彈出一個對話框,歡迎該人員返回該網站。
但是在Chrome中,每次關閉對話框時都會彈出一個新對話框。我想這是因爲文本字段在技術上仍然「聚焦」。
但是,在Firefox或IE9中不會發生此問題。
我在Chrome中解決了這個問題,添加了我目前評論的內容。但是我想知道的是,如果這種行爲被認爲是一個錯誤或正常行爲,並且如果它是正常的,那麼爲什麼其他瀏覽器的行爲有所不同?
下面是javascript代碼示例:
//var checked = 0;
var checkIt = getCookie('cia_db');
function checkCookie() {
// if(checked == 0) {
if(checkIt == 'logged_in') {
alert('Welcome back to CIA headquarters.');
//return true;
}
//}
//checked++;
}
而這裏的HTML:
<form id="form1" name="form1" action="" method="get">
<input type="text" name="username" id="username" value="smeegle" size="15" onfocus="checkCookie();">
等等
我會認爲這是一個錯誤,因爲'onfocus'應該火'當一個元素獲得focus'警報()之前刪除的焦點。它沒有說'只要一個元素在焦點上'。與'onfocus'相反的是'onblur',它被定義爲「元素失去焦點時觸發」,而「onblur」只觸發一次。 – xbonez
我認爲這也是一個bug。在Chrome 17中沒有修復。也許你應該提交一個錯誤報告。 http://jsfiddle.net/x2Zvz/ – mrtsherman
@mrtsherman我不會稱這是一個錯誤。嘗試使用'console.log'而不是'alert',它可以很好地工作,因爲當警報是'okay-ed'時,Chrome會將焦點返回到'input'元素,並在無窮無盡的情況下觸發'onfocus'事件處理程序循環。 –