2011-07-28 3 views
11

私はHTML文書を持っています。
イベントは、javacriptを使用して、文書内の特定のFORM要素のすべての要素に関連付けられます。私は番目の形式でJ番目の要素を取得することができます、しかし、私は要素に関連するイベントを取得することができますDOM要素に関連付けられたイベントを取得するにはどうすればよいですか?

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

この方法です。
フォームに任意の数の要素を入れることができます。IE 8を使用しています。


おかげ



EDIT:
実は私はXMLにHTMLのDOMをシリアル化しようとしていました。私はこれを行うために何をしたか

されました:私はこれから取得しています何

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 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()' /> 

すべて私が私の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()を呼び出して関数の宣言テキストを実際に得ることができます。これが難しいのは、宣言がエクスポートされるかどうかを関数呼び出しであるかどうかを判断することです。

あなたはすなわちを通じて、すべての要素のハンドラを追加した場合、属性

を通じて登録2つのハンドラ:あなただけ、あなたはすでにやるようなあなたのフォーム要素を反復処理し、onlickを得ることができ

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

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

のonmouseover 、onblur、on ....プロパティをひとつずつXMLに保存します。この場合も、このプロパティのコンテンツはFunctionオブジェクトであるため、実際のコンテンツを保存するには、をFunctionオブジェクトに保存する必要があります。

さらに、さまざまなブラウザに応じてイベントハンドラを登録するいくつかの方法があります。したがって、あなたのイベントがどのように登録されているかが分かっていれば、実際にそれらをシリアル化することができます。あなたがしなければ、それは非常に困難になるだろう。

私はあなたに少し助けてくれることを願っています。

1

firequeryと呼ばれるDOM要素に、私はfirebug自体が通常のJSで添付されたイベントを表示できると思います。

JSでファイヤーバグが書かれていることを考えると、明らかにそれを行う方法が必要です。 残念ながら、私はソース自分自身を通過する時間を持っていない(私はしたいと思います:D)がありますが、ここでレポを見つけることができます: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 [I] .elements [J] .onclickが返されます

document.forms [I] .elements [J] .onblur
:ここ

function onclick() 
{ 
    login() 
} 

は、私は同様に私たちはのような多くの人を確認することができ、ボタン
ののonClickを呼んでいた方法であり、document.forms [i] .elements [j] .onfocusなど



この質問に興味をお持ちいただきありがとうございます。

+0

この回答は私が特定のケースで探していたものです。そうでなければ、クリスの答えは私が先にしたいものです。 – EMM

関連する問題