6

Web ブラウザー コントロールを使用してフォームを自動送信しようとしています。次のコードを使用して送信しています」

currentElement.InvokeMember("submit");

これで、このメソッドは正常に機能します。ただし、フォームには、送信時にボタンをクリックすると呼び出される JavaScript 関数が含まれている場合があります。フォームに「送信」というボタン画像があり、ユーザーがそれを押すと、javascript 関数 somefunction() が呼び出され、フォームが送信されるとします。

問題は、上記のメソッド InvokeMember を使用すると、フォームが送信されるだけで、関連するスクリプト (この場合は somefunction()) が実行されず、コードを手動で作成する必要があることです。

webBrowser1.Document.InvokeScript("somefunction");

ただし、これには、何らかの機能があるかどうかを事前に知っておく必要があります。フォームを送信すると、関連するすべての JavaScript が自動的に実行されますか?

また、ユーザーがフォームを送信するためにクリックしたボタン名またはIDもわかりません。場合によっては、ID や名前がないこともあります。

<span class="btn" onclick="somefunction()">
<img style="cursor:pointer" title="Submit" alt="Submit" src="http://stackoverflow.com/imagesbutton.png?2012">
<div id="s" style=""></div>
</span>
4

2 に答える 2

2

WebBrowserコントロールをいじってからしばらく経ちましたが、以前はフープを飛び越えさせていました。私は過去にこの問題に遭遇しました。

http://www.codeproject.com/Tips/60924/Using-WebBrowser-Document-InvokeScript-to-mess-aro

オブジェクトを取得したら、フォームを送信する前にForm、から文字列を取り出し、OnSubmitこれを実行して実行します。

object[] codeString = {"myObject.setVariable(0);"};
webBrowser1.Document.InvokeScript("eval",codeString);

チャームのように機能します。

于 2012-04-26T18:28:33.737 に答える
2

画像タグの名前またはIDがわかっている場合は、

webBrowser1.Document.GetElementById("button").InvokeMember("click");

また

webBrowser1.Document.GetElementByName("button").InvokeMember("click");  

javascriptで関連関数を呼び出す

于 2012-05-23T10:07:32.383 に答える