2011-07-28 3 views
11

HTML 문서가 있습니다.
이벤트javacript을 사용하여 문서의 특정 FORM 요소에있는 모든 요소와 연관시킬 수 있습니다. 내가 내가 번째 형태 J 번째 요소를 얻을 수 있습니다,하지만이 요소와 관련된 이벤트를 얻을 수 있습니다DOM 요소와 관련된 이벤트를받는 방법은 무엇입니까?

var element = document.forms[i].elements[j]; 

이 방법.
양식에 원하는 수의 요소가있을 수 있습니다. IE 8을 사용하고 있습니다.


감사



편집 :
는 사실 내가 XML로 HTML의 DOM을 직렬화하려고했다. 내가이 일을 한 일

했다 : 이제

<?xml version='1.0' encoding='UTF-8'?> 

<FORM name="loginForm" method="post" action="/sigma/login.do;jsessionid=E6509E7BA55573AA5386274ABB93F718"> 

    <INPUT type="hidden" name="message" Value ="" /> 
    <INPUT type="hidden" name="userAction" Value ="" /> 
    <INPUT type="text" name="userId" Value ="" /> 
    <INPUT type="password" name="passwd" Value ="" /> 
    <INPUT type="button" name="button" Value ="Continue" /> 


</FORM> 

내가 가진 가정 :

<input tabindex="7" name="button" type="button" class="button" 
       style="width:100;height:30" Value="Continue" onclick='login()' /> 

모든 I를

createXML : function() { 

     objSerializeDOM.msg += ""; 
     objSerializeDOM.msg += "<?xml version='1.0' encoding='UTF-8'?>\n\n"; 
     // Get all the forms in a document. 
     var forms = document.forms; 

     for (var i = 0; i < forms.length; i++) { 
      // Get all the elements on per form basis. 
      elements = document.forms[i].elements; 
      objSerializeDOM.msg += "<FORM name=\"" + forms[i].name + "\" method=\"" 
        + forms[i].method + "\" action=\"" + forms[i].action + "\">\n\n"; 
      for (var j = 0; j < elements.length; j++) { 
       objSerializeDOM.msg += " <" + elements[j].tagName + " type=\"" 
         + elements[j].type + "\"" + " name=\"" 
         + elements[j].name + "\"" + " Value =\"" 
         + elements[j].value + "\" />\n"; 
      } 
      alert(document.forms[i].elements[1].event); 
     } 
     objSerializeDOM.msg += "\n\n</FORM>\n\n"; 
     alert(objSerializeDOM.msg); 
     objSerializeDOM.writeToFile(objSerializeDOM.msg); 
    } 

은 내가이에서 얻고 것은 XML이다 지금 XML 또는 onBlur() 등의 관련 이벤트를 onClick으로 가져 오는 것입니다.

당신이 결합 된 어떤 jQuery를 이벤트를 보여줍니다 불을 지르고위한 플러그인을 얻을 수 있습니다 - 이것은 아마 당신이 찾고 있지만이어야 당신이보고해야되는 DOM의 일부를 참조 도움이 될 수 있습니다 것이 아니다

감사

+2

이벤트가 요소에 첨부 된 방법에 따라 다릅니다. –

+0

가능한 복제본 http://stackoverflow.com/questions/446892/how-to-find-event-listeners-on-a-dom-node –

+1

* 이벤트 *의 의미를 더 잘 설명 할 수 있습니까? 요소에 이벤트 *를 첨부 하시겠습니까? 아니면 바인딩 할 수있는 이벤트가 무엇인지 알고 싶습니까? –

답변

3

Felix가 언급 한 바에 따르면 개체에 이벤트를 등록하는 방법은 여러 가지가 있습니다.그렇다면 객체에 첨부 된 이벤트를 가져와 XML에 어떻게 든 직렬화 할 수있는 방법은 등록 방법에 따라 다릅니다. 나는 당신이 그들을 직렬화 할 수있는 방법에 대한 생각을 나열 할 것이다. 코드가 완전히 인라인 경우

<INPUT type="hidden" name="message" Value ="" onclick="alert('hello')"/> 

, 당신은 당신의 XML의 속성을 얻고 저장할 수 있습니다 :

1 개 핸들러는 인라인을

1.1 완전히 인라인 코드를 등록했다.

2.1이 경우 인라인 함수 호출

당신은 함수의 선언을 수출해야합니다. JavaScript에서는 함수가 객체이기 때문에 실제로 myFunc.toString()을 호출하여 함수의 선언 텍스트를 얻을 수 있습니다. 이것에 대한 어려운 부분은 이것이 선언문이 반출되거나 반출 될 수있는 함수 호출인지 알아내는 것입니다.

당신이 예를 통해 모든 요소 핸들러를 추가 한 경우 속성

통해 등록이 핸들러 : 당신은 그냥, 당신은 이미처럼 양식 요소를 반복하고 onlick를 얻을 수

function myFunc(num){ 
    alert("Your number is: " + num); 
} 

document.getElementById('myElement').onclick = myFunc; 

onMouseover와 , onblur, on .... 속성을 하나씩 하나씩 XML에 저장합니다. 또한이 경우에는이 propertys의 내용도 Function Objects가 될 것이므로 실제 내용을 저장하려면 을 Function 객체에 저장해야합니다.

또한 다른 브라우저에 따라 이벤트 처리기를 등록하는 몇 가지 다른 방법이 있습니다. 따라서 이벤트가 어떻게 등록되었는지 확실히 알고 있다면 실제로 이벤트를 직렬화 할 수 있습니다. 그렇게하지 않으면 매우 어려울 것입니다.

조금만 더 알려 주시면 감사하겠습니다.

1

firequery라고 불리는 DOM 요소에, 나는 방화범이 끌린 독자가 JS에 첨부 된 이벤트를 보여줄 수 있다고 생각한다.

방화범은 JS로 작성되었다는 것을 고려하면 명확하게 그것을 수행해야합니다. 불행히도 나는 소스 나 자신을 갈 시간이 없어 (내가하고 싶습니다 : D)하지만 당신은 여기에 REPO을 찾을 수 있습니다 : http://code.google.com/p/fbug/source/browse/branches/firebug1.8/content/firebug/

죄송합니다 나는 더 많은 도움과 행운이 될 수 없습니다

+0

당신이 도울 수 있는지 여부는 그다지 중요하지 않습니다. 그것은 당신이 얼마나 신경 쓰는지에 관한 것입니다. 답장을 보내 주셔서 감사합니다. – EMM

+0

당신은 환영합니다 :) – jammypeach

0

매우 유용한 도구 시각적 이벤트은 요소와 관련된 모든 이벤트를 시각적으로 표시합니다.

모니터링 할 페이지의 끝에 다음 코드를 추가하십시오.

이렇게하면 페이지가 비활성화되고 모든 이벤트가 아이콘으로 강조 표시되며 해당 아이콘에 커서를 가져 가서 수행중인 작업을 표시합니다.

(function() 
{ 
    if(typeof VisualEvent!='undefined') 
    { 
     if(document.getElementById('Event_display')) 
     { 
      VisualEvent.fnClose(); 
     }else{ 
      VisualEvent.fnInit(); 
     } 
    }else 
    { 
     var n=document.createElement('script'); 
     n.setAttribute('language','JavaScript'); 
     n.setAttribute('src','http://www.sprymedia.co.uk/design/event/media/js/event-loader.js'); 
     document.body.appendChild(n); 
    } 
})(); 

세부 사항에 대한 visual event을 읽어 보시기 바랍니다.

+0

이 코드를 사용하는 바로 가기가 있습니다 : 페이지를 열고 주소창에 코드를 붙여 넣으십시오 (예 : javascript : code) –

1

그것은 내 자신의 질문에 대답 이상한 보이지만 그것은 어떤 하나 도움이 될 수 있지만 :

나는 몇 가지 조사를하고 있음을 발견 하는 경우 - document.forms는 [내가] .elements는 [J] 돌아갑니다 .onclick

하고 document.forms [I] .elements [J] .onblur
: 여기

function onclick() 
{ 
    login() 
} 

내가 버튼 onclick을 호출 한 메소드
마찬가지로 우리 같은 많은 사람들을 확인할 수있다document.forms [i] .elements [j] .onfocus 등.



이 질문에 많은 관심을 가져 주셔서 감사합니다.

+0

이 답변은 내 특별한 경우에 찾고 있었지만, 그렇지 않으면 크리스의 대답은 내가 앞서 가고 싶습니다. + 1. – EMM

관련 문제