2012-07-22 3 views
1

내 게시물이 중복되어 죄송합니다. Why does setTimeout fire twice in Chrome, but not IE or Firefox?.Chrome에서 Onclick을 두 번 실행하면 IE 또는 Firefox가 실행되지 않습니다.

실제로 하이퍼 링크에 대해 인라인으로 작업하려면 다음 javascript 호출이 필요하므로 누구나 아이디어가 있는지 궁금합니다. 하이퍼 링크 중 하나를 클릭하면 javacript 함수 GenerateNewNumber이 Chrome에서는 두 번 실행되지만 IE 또는 Firefox에서는 실행되지 않습니다. Chrome에서 한 번 클릭하면 이후 클릭에 한 번만 라벨에 추가됩니다. 다시 Chrome 20.0.1132.57, IE9 및 Firefox 13을 사용하고 있습니다.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="test" %> 

<!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 id="Head1" runat="server"> 
<title></title> 
<script type="text/javascript" language="javascript"> 

    function GenerateNewNumber() { 
     var randomnumber = Math.floor(Math.random() * 1234); 
     document.getElementById('NumberLabel').innerHTML += '<br>' + 'Random Number is ' + randomnumber; 
    } 

</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 

    <asp:LinkButton ID="Button1" runat="server" OnClientClick="GenerateNewNumber(); return false;">Click for Random Number Test 1</asp:LinkButton><br /> 
    <a id="Button2" href="#" onclick="GenerateNewNumber(); return false;" target="_blank">Click for Random Number Test 2</a> 
    <asp:Label ID="NumberLabel" runat="server"></asp:Label> 
    </form> 
</body> 
</html> 

다시 도움 주셔서 감사합니다.

+0

[가능한 이유는 setTimeout이 Chrome에서는 두 번 실행되지만 IE 나 Firefox에서는 실행되지 않습니다.] (http://stackoverflow.com/questions/11596982/why-does-settimeout-fire-twice-in-chrome-but -not-ie-or-firefox) –

+0

그래, 비슷하지만이 예제의 문제는 setTimeout과 다르다. 필자가 제공 한 jQuery 예제와는 달리 인라인으로 실행해야한다. – user199962

+0

http://jsfiddle.net/HUh8E/ Chrome 20 또는 21에서 그런 문제가 없습니다. ASP가 전혀 없어도 실패한 테스트 사례를 얻을 수 있습니까? – ephemient

답변

0

사용중인 Google 확장 프로그램의 결과 일 수 있습니다. 그러나, 나는 하이퍼 링크의 onclick에 지정된 반환 false 와이 문제가 기억 나네. 평범한 비틀기가 두 번이나 발사되는 것을 멈추게 한 것을 기억합니다.

'return false'뒤에 세미콜론을 제거해보십시오. 이 문서를 검토

, asp.NET LinkButton not working in Google Chrome

이 방법을 시도 할 수 있습니다.

protected override void OnPreInit(EventArgs e) 
{ 
    if (Request.UserAgent != null && (Request.UserAgent.IndexOf("AppleWebKit") > 0)) // added for compatibility issues with chrome 
    { 
     this.ClientTarget = "uplevel"; 
    } 

    base.OnPreInit(e); 
} 

결국 링크/앵커 이외의 요소/태그를 사용해야합니다.

+0

감사합니다. Brett - 문제의 원인이되는 확장 프로그램입니다 (두 번 클릭). 나는 이것을 확실히 앞으로 보게 될 것입니다. – user199962

관련 문제