2009/08/23(Sun) 13:06:52 編集(投稿者)
■No40288 (RT さん) に返信
> webBrowser_Main.Document.Body.AttachEventHandler("onclick", delegate
> {
> webBrowser_Main.Document.Body.SetAttribute("contentEditable", "false");
クリックされるたびに、『Body』の contentEditable を "false" にしているようですね。
まず、デザインモードにしたとき
((mshtml.IHTMLDocument2)webBrowser1.Document.DomDocument).designMode = "On";
は、クリックしてもイベントは発生しません。
一方、デザインモードにしていない場合(閲覧モード)には、contentEditable で
編集可能にしてあるかどうかに関わらず、onclick のイベントは発生します。
ただし編集可能にしていた場合、最初のクリックはオブジェクトの選択のみを意味するので、
クリックされたオブジェクトによっては、該当要素のイベントとして扱うために、
選択後にもう一度クリック(物によってはダブルクリック)せねばならない可能性があります。
> HtmlElement tag = webBrowser_Main.Document.ActiveElement; // event.srcElement の代用
No39742 のコードで、上記にも転記されている『event.srcElement』というヒントを
コメント文に埋め込んでおいたのですが、そのことには気が付いていましたか?
HtmlElement tag = webBrowser1.Document.ActiveElement;
mshtml.IHTMLWindow2 Window = (mshtml.IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
mshtml.IHTMLEventObj Event = Window.@event;
label1.Text = tag.TagName;
label2.Text = Event.srcElement.tagName;</pre></pre>