2016-10-06 12 views
0

私はウェブブラウザコントロールを備えたフォームを持っています。このイベントは、これらを起動するとブラウザコントロールにアクセスするjQuery

setDropDown "locationType", "1-4XB-2400" 
setDropDown "areaType", "1-4XB-1958" 

:私はwebBrowser_DocumentCompleteイベントに2つの異なるドロップダウンのためにこれを呼び出す

Private Sub setDropDown(elemID As String, elemValue As Variant) 

Dim elem As HTMLSelectElement 
Dim i As Integer, win As Object 

Set elem = Me.webBrowser.Object.Document.getElementById(elemID) 
elem.Value = elemValue 
Set win = Me.webBrowser.Object.Document.parentWindow 
win.execScript "$('#" & elemID & "').change();" 

End Sub 

:私は、ドロップダウンリストの値を設定し、jQueryの変更機能を呼び出す関数を持っています通話は機能しません。しかし、私はまた、コマンドボタンを追加して、クリックイベントに全く同じコマンドを追加しましたが、これは必ず失敗しません。 DocumentCompleteイベントのフォーカスを変更し、さまざまな長さのポーズを追加しようとしました。これのどれもうまくいかないようです。

のクラスdynamicOptionListの選択に役立つ場合、私はそのページを制御できません。また、私はchange()イベントを呼び出すことはできませんが、jQuery経由で呼び出すことはできません。

+0

回避策はjavascriptオブジェクトへのonchangeイベントを追加しました建てられた。ただし、一時停止を追加しても問題は解決しなかったことに注意してください。どこに追加しましたか? –

+0

お返事ありがとうございます。私は上記のコマンドを実行する直前に15秒の休止を入れました。 – MikeP

+0

'Sleep'、' DoEvents'を実行し、 'webBrowser.Object.Document.getElementById(elemID) 'の存在をテストするループを入れてください。 – dbmitch

答えて

0

OK。これを考え出す。問題は、ページがロードされた後に選択値を設定するスクリプトがあることでした。ですから、私はdocumentcompleteイベントを設定し、その後はオーバーライドされます。一時停止はこれを修正しません。動的なコンテンツが完全である前に、DocumentCompleteの火災があります。それはタイミングの問題へのポイントがあることではないのイベントから、コマンドボタンから動作しますが、場合

Public Sub setDropDown(elem As String, val As String) 
    Dim sel As IHTMLSelectElement 
    Dim head As IHTMLElement 
    Dim script As IHTMLScriptElement 
    Dim setVar As String, elemVar As String 

    Set head = wb.Object.Document.getElementsByTagName("head")(0) 
    Set script = wb.Object.Document.createElement("script") 
    setVar = "_" & elem & "Set" 
    elemVar = "_" & elem 
    script.Text = "var " & elemVar & "= document.getElementById('" & elem & "'); " + _ 
     "var " & setVar & "=0; " + _ 
     "if (" & elemVar & "!= undefined) { " + _ 
      elemVar & ".setAttribute('onchange', function() { " + _ 
       "if (" & setVar & "==0) { " + _ 
        elemVar & ".value = '" & val & "'; " + _ 
        setVar & "= 1;" + _ 
       "}" + _ 
      "});" + _ 
     "};" 
    head.appendChild script 

End Sub 
関連する問題