2009-06-24 5 views
0

아래의 간단한 코드는 Google 크롬 브라우저 대신 두 개의 알림을 출력합니다. Chrome에서만 이유를 말할 수 있습니까?Chrome Javascript Double Alert Loop?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Can you tell?</title> 
<script language="javascript" type="text/javascript"> 

function hitme() 
{ 
alert('yep!'); 
} 
</script> 
</head> 

<body> 
<a href="#" onmouseover="hitme();">LINK</a> 
</body> 
</html> 

크롬이 앵커를 텍스트로 보는가 + 행입니까?

Chrome에서이 두 상자를 만드는 이유는 무엇입니까?

+1

두 번 마우스를 틀어 놓지 않았습니까? –

+0

정말 그렇게하지 마십시오. 사용자가 마우스를 움직 였기 때문에 대화 상자를 팝업하는 것은 좋지 않습니다. 적어도 사용자가 뭔가를 클릭 할 때까지 기다려야합니다. – yfeldblum

답변

5

마우스 오버 같은 이벤트에 대한 경고는 악명이 높습니다 (읽기 : 예측할 수 없음). mouseover 이벤트 처리는 상태 변경에는 좋지만 경고와 같은 일종의 상호 작용에는 적습니다.

마우스 오버가 여러 번 실행되는 경우 (mouseover는 마우스 센터와 다릅니다. 참고 : 잘 지원되지 않음) 마우스 이벤트에 대한 자세한 내용은 http://www.quirksmode.org/js/events_mouse.html을 참조하십시오.

다른 브라우저가 이벤트를 다르게 처리한다는 점을 알아야합니다. 예를 들어 mousemove는 대부분의 브라우저에서 마우스 으로 움직일 때만 발생하지만 파이어 폭스 (정확하게 리콜하면)는 거의 끊임없이 발사됩니다. 마우스 오버의 경우에도 마찬가지입니다. 정말로 운이 좋다면, 마우스를 한 요소 위로 0.5 초 동안 닫을 수있는 경고창이 나타납니다.

-1

첫 번째 제안은 문제가 크롬 (예 : 크롬 버그) 또는 일반적인 웹킷 (모든 웹킷 기반 브라우저 전반)에서 발생하는지 여부를 분명히 알리는 사파리를 시도하는 것입니다. D

(내 대답은 시나리오가 mouseover element -> alert() 이었음을 나타냅니다. 더 이상 마우스 오버 요소를 오버하고, 나는 div를 포함하는 영역 밖에서 발생한 경고를 무시한다고 가정합니다.이 시나리오에서는 브라우저 간의 이벤트 모델 차이에 관계없이 이 올바르지 않음 두 개의 대화 상자가 표시됩니다. 흥미로운 "가능성이 높기 때문에 웹 버그의 위의 이벤트 처리를 엉망으로 만들었습니다. 그러므로 내 제안은 크롬 버그 일 수 있습니다)

1

나는 창 포커스와 관련이 있다고 생각합니다. 링크 위로 마우스를 빠르게 움직이면 하나의 경고 상자 만 나타납니다. Mac 용 사파리에서는 발생하지 않습니다.