我在google chrome上發生了一些奇怪的事情。使用下面的代碼,我得到無數的警報。Google chrome造成文本框焦點上的死循環
<input type="text" />
$('input[type="text"]').live('focus', function(event) {
alert('in');
});
Firefox和IE8都好。
這是爲什麼發生在鉻?
我在google chrome上發生了一些奇怪的事情。使用下面的代碼,我得到無數的警報。Google chrome造成文本框焦點上的死循環
<input type="text" />
$('input[type="text"]').live('focus', function(event) {
alert('in');
});
Firefox和IE8都好。
這是爲什麼發生在鉻?
我想,這是因爲在關閉對話框(警告框)之後,焦點返回到文本框,因此該函數將再次觸發。
我認爲這是因爲每次單擊警報的「確定」按鈕時,瀏覽器都會將焦點從警報發送到文本字段。您可能不會在代碼的最終版本中彈出警報(methinks),所以從長遠來看,這可能不是問題。
+1也代替警告我經常在頁面(有時也會被絕對值)上添加額外的div和只添加到郵件那個div。例如'$(「#myMessageDiv」)。append(messageString +「
」);' –
我做的是完全相同的事情 - 在開發時比警報侵入性更小:) – Pwninstein
我更喜歡console.log,它可以處理任何類型。 – Wylie
問題是,alert()
是從輸入框中竊取焦點,然後在對話框關閉時恢復焦點。您可以通過在顯示警報之前清除輸入框中的焦點來解決此問題。
發生這種情況,因爲它是將焦點設置迴文本框。 試試這個應該在Chrome
$('input[type="text"]').live('focus', function(event) {
alert('in');
$(this).blur();
});
做工精細由於警報獲得焦點從你的文本框,並在關閉警告對話框中,重點回來。如果你做你的函數中的任何非調焦機構,將觸發一次:http://jsfiddle.net/G8CmV/
<input type="text" />
<div id='tester'>Test:</div>
$('input[type="text"]').live('focus', function(event) {
$('#tester').html($('#tester').html() + "_*");
});
嗯感謝您的答案。看到這裏爲我的真正問題http://stackoverflow.com/questions/6869717/google-chrome-infinite-loops-and-selecting-text – ajbeaven
對於其他人看這個,如果你正在調試,使用'console.log'而不是顯示一個警報模式,因爲這將解決我上面遇到的問題。 – ajbeaven