2010-03-18 7 views
3

IE에서 잘 작동하지만 불행히도 Google 크롬/Firefox에는 작동하지 않는 코드가 있습니다.자바 스크립트 클릭 기능

자바 스크립트에서 버튼에 click() 이벤트를 호출 할 때 의존합니다. 그 주위를 읽는 것은 이것이 IE 특정 확장 (doh) 인 것처럼 보입니다. 크롬 + 파이어 폭스에서 비슷한 일을 할 수있는 방법이 있습니까? 명확히하기 위해 사용자가 버튼을 클릭 할 때 발생하는 상황을 처리하지 않고 특정 버튼에 대해 click 이벤트를 실행합니다.

감사

그것을 요구하는 사람들의 코드 : 정말하지 않는 jQuery를 사용하지 않으

function getLinkButton(actionsDiv) 
{ 
    var hrefs = actionsDiv.getElementsByTagName("a"); 
    for (var i=0; i<hrefs.length; i++) 
    { 
     var id = hrefs[i].id; 
     if (id !=null && id.endsWith("ShowSimilarLinkButton")) 
     { 
      return hrefs[i]; 
     } 
    } 
    return null; 
} 

function doStuff() 
{ 
    //find the specific actions div... not important code... 
    var actionsDiv = getActionsDiv(); 
    var linkButton = getLinkButton(actionsDiv); 

    if (linkButton != null) 
    { 
    if (linkButton.click) 
    { 
     linkButton.click(); 
    } 
    else 
    { 
     alert("Cannot click"); 
    } 
    } 
} 

을 절대적으로 필요

+0

이 코드를 제시해주세요 .. –

+0

@nvl : 나는 그가하고 싶은 생각 버튼에 설정된 "클릭"이벤트 핸들러를 전달합니다. –

답변

2

난 당신이 element.dispatchEvent 찾고있는 생각 :

function simulateClick() { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
    0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    var cb = document.getElementById("checkbox"); 
    var canceled = !cb.dispatchEvent(evt); 
    if(canceled) { 
    // A handler called preventDefault 
    alert("canceled"); 
    } else { 
    // None of the handlers called preventDefault 
    alert("not canceled"); 
    } 
} 

"내 버튼에 대한 onclick 이벤트를 실행하려고합니다."라는 질문을 읽었지 만 다른 모든 사람들은 "내 버튼에 대한 onclick 이벤트를 처리하려고합니다"라고 읽은 것 같습니다. 내가 잘못했는지 알려주세요.

코드를 수정, 적절한 X-브라우저 구현 될 수 있습니다 click` 이벤트가 크롬, 파이어 폭스에서 작동`때문에

if (linkButton != null) 
{ 
    if (linkButton.fireEvent) 
    linkButton.fireEvent("onclick"); 
    else 
    { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
           0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    linkButton.dispatchEvent(evt); 
    } 
} 
+0

function clickButton (element) { if (element.click) { element.click(); } else if ("fireEvent"in 요소) { element.fireEvent ("onclick"); } else { var evt = document.createEvent ("MouseEvents"); evt.initMouseEvent ("click", true, true, window, 0, 0, 0, 0, false, false, false, false, 0, null); element.dispatchEvent (evt); } } 이 지금 ... –

+0

이 나는대로 FireEvent 비트가 작동하게 비트 생각하지만 파이어 폭스에서 작동하지 않습니다, 내가 코드 덕분에있어 기능입니다하지만 크롬에 대한 작업을 수행 Chrome에서. –

+0

@Gordon :'fireEvent'도 IE에서 작동하므로'click()'을 없앨 수 있습니다. 나는'linkButton' -'element.dispatchEvent (evt);로 변경하려고했던 코드에서'element'에 대한 참조를 남겨 두었습니다,'linkButton이어야합니다.dispatchEvent (evt); ' –

0

의 onclick = "methodCall을은();" ... 잘 나를 위해 작동

0

당신은 온 클릭 속성을 사용할 수 있습니다 또는 당신이 더 많은 기능을 필요로하는 경우 jQuery를 및 이벤트가 제공 한 번 봐 가지고 : http://api.jquery.com/category/events/