tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルWebBrowser
記事No15768
投稿日: 2013/07/25(Thu) 13:35
投稿者ペレ
OS:WindowsXP
VB:VB6
コントロール:WebBrowser

submitのクリックを使い分ける方法を教えてださい。(NAMEで)

HTMLは以下です。「確認」と「保存」が有ります。
<INPUT TYPE="submit" NAME="kakunin" VALUE=" 確認  " >
<INPUT TYPE="submit" NAME="hozon"   VALUE=" 保存  " >


以下は全てうまく動きません。
WebBrowser1.Document.getElementsByName("Input")(0).Click
WebBrowser1.Document.Forms("kakunin").InvokeMember ("click")
WebBrowser1.Document.All.getElementsByName("kakunin").Item(0).InvokeMember ("click")

WebBrowser1.Document.Forms("kakunin").InvokeMember ("click")
WebBrowser1.Document.All.tags("input").Item("kakunin").Click  

[ツリー表示へ]
タイトルRe: WebBrowser
記事No15769
投稿日: 2013/07/25(Thu) 22:08
投稿者魔界の仮面弁士
もしも <INPUT TYPE="submit" NAME="kakunin" VALUE=" 確認  " > を
捉えたいのであれば、.getElementsByName("kakunin") ですね。

> WebBrowser1.Document.getElementsByName("Input")(0).Click

上記は、<input type="button" name="Input" > などを
操作するための構文になります。

.getElementsByName は、要素名ではなく name属性を検索します。
要素名を基準にしたいのであれば、
.getElementsByName ではなく
.getElementsByTagName を使いましょう。


> WebBrowser1.Document.Forms("kakunin").InvokeMember ("click")
この場合は、<form name="kakunin" id="kakunin"> が参照されます。

form を対象にする場合は、click するのではなく、送信(submit メソッド)を
呼び出しましょう。ただしこの方法の場合、確認ボタン/保存ボタンの
呼び分けができないので、今回のパターンでは使われません。


> WebBrowser1.Document.All.getElementsByName("kakunin").Item(0).InvokeMember ("click")
getElementsByName メソッドは、.all に対してではなく、
.document に対して使います。


> submitのクリックを使い分ける方法を教えてださい。(NAMEで)
WebBrowser1.Document.getElementsByName("hozon")(0).Click かな?

[ツリー表示へ]
タイトルRe^2: WebBrowser
記事No15770
投稿日: 2013/07/30(Tue) 17:15
投稿者ペレ
> WebBrowser1.Document.getElementsByName("hozon")(0).Click かな?

試してみたらエラーにはならなかったのですが、画面が変わりません。
正常にクリックできれば画面が遷移するのですが・・・
あ、確認ダイアログがでると駄目でしょうか?
IEでクリックすると確認ダイアログが出ますが、WebBrowserで試すと画面が何も変わりません。(確認ダイアログも無し)


> もしも <INPUT TYPE="submit" NAME="kakunin" VALUE=" 確認  " > を
> 捉えたいのであれば、.getElementsByName("kakunin") ですね。
>
> > WebBrowser1.Document.getElementsByName("Input")(0).Click
>
> 上記は、<input type="button" name="Input" > などを
> 操作するための構文になります。
>
> .getElementsByName は、要素名ではなく name属性を検索します。
> 要素名を基準にしたいのであれば、
> .getElementsByName ではなく
> .getElementsByTagName を使いましょう。
>
>
> > WebBrowser1.Document.Forms("kakunin").InvokeMember ("click")
> この場合は、<form name="kakunin" id="kakunin"> が参照されます。
>
> form を対象にする場合は、click するのではなく、送信(submit メソッド)を
> 呼び出しましょう。ただしこの方法の場合、確認ボタン/保存ボタンの
> 呼び分けができないので、今回のパターンでは使われません。
>
>
> > WebBrowser1.Document.All.getElementsByName("kakunin").Item(0).InvokeMember ("click")
> getElementsByName メソッドは、.all に対してではなく、
> .document に対して使います。
>
>
> > submitのクリックを使い分ける方法を教えてださい。(NAMEで)
> WebBrowser1.Document.getElementsByName("hozon")(0).Click かな?

[ツリー表示へ]
タイトルRe^3: WebBrowser
記事No15771
投稿日: 2013/07/31(Wed) 14:07
投稿者魔界の仮面弁士
> IEでクリックすると確認ダイアログが出ますが、WebBrowserで試すと画面が何も変わりません。(確認ダイアログも無し)

どういったスクリプトで構成されたページなのか分からないので、
一般論だけで回答するのは難しいのですが、たとえばイベント処理が
addEventListener や attachEvent で組み込まれていた場合には、
.fireEvent("onclick") に切り替える必要があるかもしれません。

[ツリー表示へ]
タイトルRe: WebBrowser
記事No15776
投稿日: 2013/08/08(Thu) 11:23
投稿者ペレ

.fireEvent("onclick")で試してもなにも動かないです・・・。

ためしにsubmitしてみたら保存されました。
なぜ確認ではないのでしょうか?(type=2でsubmitされた?)
下記のtypeを1に設定できたら確認も出来ると思うのですが、その方法はありますか?


JavaScript

var type
type=0

  function hozonhk(){

        if (type == 1) {                                
            if(confirm('確認ですか') == false){
                type=0;
                return false ;
            }
        }
        else if(type == 2) {                            
            if(confirm('保存すか') == false){
                type=0;
                return false ;
            }
        }
        return true;
  }

vbScript
<FORM TARGET="_top" NAME="frm_hozon" ACTION="KAKUNIN_HOZON.asp" METHOD="post" onSubmit="return hozonhk()">

<INPUT TYPE="submit" NAME="kakunin" VALUE="確認" onclick="javaScript:type=1;">
<INPUT TYPE="submit" NAME="hozon"   VALUE="保存" onclick="javaScript:type=2;">

[ツリー表示へ]