0

VB6 シック クライアント (Web ブラウザー コントロールを使用している) 内の ASP.NET MVC 4 Web アプリから、非表示のボタン コントロールでプログラムによってトリガーされたクリック イベントをトラップするのに苦労しています。以下を使用して、クリックイベント自体をトラップできます。

Private WithEvents WebDoc As HTMLDocument

Private Function WebDoc_onclick() As Boolean  

    Select Case WebDoc.activeElement.iD    
       Case "A"
         Do something

        Case "C"
          Do something else

    End Select

    WebDoc_onclick = True

End Function

コントロールが表示されている場合、これは問題なく機能します。ただし、コントロールが非表示の場合:

<div class="HideBtnDiv">
   <input id="C" name="NoItems" type="button" class="BtnDiv" style="display:none"/>
</div>

そして、次のいずれかを介してプログラマティッククリックをトリガーしようとします:

    $("#C").('click');

    $("#C").trigger('click');

    $("#C").triggerhandler("click");

    $("#C").focus();
    $("#C").trigger('click');

「id」属性の空の文字列を取得しているため、どのボタンがクリックされたかを区別できません。このボタンは、特定の基準が満たされていることを VB6 アプリに示す以外の目的はありません。そのため、ボタンを非表示にする必要があります。IDが剥奪されている理由を誰か知っていますか? または、クライアントに返信する他の方法はありますか?

を使用して要素スタイルでフィルタリングも試みました

Select Case WebDoc.activeElement.Style

    Case "display:none"
        Do something else

End Select

しかし、それは「[オブジェクト]」として戻ってきたので、そこにも運がありません。これを回避する方法があれば教えてください。

ありがとう、リジン

4

2 に答える 2

0

ありがとう、アフマド。実際、私は .click() ではなく .('click') を意味していました。申し訳ありません。

とにかく、私はあなたの提案を試し、ボタンを表示し、ラッピング div のスタイルを display:none に設定しましたが、id 属性はまだ空の文字列として渡されていました。

ただし、これを機能させる別の方法を見つけました。折り返しの div とボタンを表示したままにし、条件が満たされたときにフォーカスしてクリックし、hide() を実行すると、問題は解決します!

$("#C").focus();
$("#C").trigger('click');

$("#C").hide();

ボタンは表示されず、VB6 は引き続きクリック イベントで ID を渡します。奇妙なことに、まだ focus() 呼び出しを行う必要があります。それがなければ、振り出しに戻ってしまいます。これがバグかどうかはわかりません。

于 2013-04-01T17:29:55.227 に答える