DOBON.NET DOBON.NETプログラミング掲示板過去ログ

vbでjsの無名関数実行

環境/言語:[XP Framework3.5]
分類:[.NET]

webbrowserを使用していて、javascriptの無名関数を実行したいと思っています。
やりたいことは、web上のボタンをクリック(実行)したいんです。
そのクリックするボタンに無名関数が使われている様で、
ボタンをクリックすると実行されるであろうコードを外部js内で見つけました。

web上のボタンのコードは以下です
<input width="50" height="30" type="image" onclick="return false;" alt="押す" src="lbtn_click.gif" name="commit">


そして上記のボタンがおされると実行される外部jsの無名関数です
var gthFrot = function(e) {
XXXXX
}

Control.InvokeScriptを使用するとは思うのですが、
Control.InvokeScript("gthFrot")としても動きませんでした
ちなみにfunction(e)のeにはXとY座業の位置が入っていました。
座標の位置を見て実行しているのかもしれません。
その場合、キーのエミュレートで対応したらいいんでしょうか?
でもweb上の位置を取得もわからない・・・

どなたか知恵をお貸し下さい。よろしくお願いします。
■No26579に返信(Tailさんの記事)
> そのクリックするボタンに無名関数が使われている様で、
> ボタンをクリックすると実行されるであろうコードを外部js内で見つけました。
その無名関数が、そのボタンに割り当てられている事が確実なのであれば、
そのボタンの click メソッドを呼び出してみては如何でしょう。 
マネージ WebBrowser 経由なら、HtmlElement クラスに対して
.InvokeMember("click") を呼び出す事になります。

> Control.InvokeScriptを使用するとは思うのですが、
Control クラスに InvokeScript メソッドは無かったとも思いますが、
もしかして、HtmlDocument.InvokeScript メソッドの事でしょうか。

> Control.InvokeScript("gthFrot")としても動きませんでした
VB であれば
 WebBrowser1.Document.InvokeScript("gthFrot")
あるいは
 WebBrowser1.Navigate("javascript:gthFrot();")
で呼び出せます。フレームを使ったページでは、もうひと工夫必要ですが。

それで呼び出せないようなら、onclick への割り当て後に gthFrot を null 等に
リセットするようなコードが JavaScript 側で実行されていたのかも。

> ちなみにfunction(e)のeにはXとY 座業 の位置が入っていました。
<form>等を通じて <input type="image"> を送信した場合に、
クリックしたx/y座標がパラメータとして渡されますが、単に
onclick に割り当てるだけでは、引数に座業(座標?)が渡されることは
無いと思います。他の関数も中継されているのでは無いでしょうか。

> 座標の位置を見て実行しているのかもしれません。
IE8の[開発者機能]などのWebデバッガを通じて、呼び出し元を追跡できませんか?
  • 題名: Re[2]: vbでjsの無名関数実行
  • 著者: Tail
  • 日時: 2010/03/23 0:17:59
  • ID: 26598
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
魔界の仮面弁士様レスどうもありがとうございます。

まだまだコーディングの第一歩なのですが、できました!
どうやらリスナーにクリックイベントを登録していたようです。

HtmlDocument.InvokeScriptを使っていたのですが、どうやっても動かなかったんです。
HtmlElement.InvokeMember("click")
でできました!
firebugで解析をしていました。IE8でもできるのですね。
おかげさまでJSがなんとなくわかってきました。

VB.NETを使用しておりました。
環境を書き忘れていても助言いただきましてありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板