DOBON.NETプログラミング道掲示板
(現在 過去ログ2 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■33445 / inTopicNo.1)  webbrowserでjqueryのイベントを発生させたい
  
□投稿者/ しろろん 一般人(1回)-(2016/08/12(Fri) 13:01:49)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    webbrowserで下記htmlページを読み込み、.netでセレクトボックスの値を変更していますが、jqueryのイベントが発火しません。
    jqueryのイベントを動作させるためにはどうすればいいのでしょうか?

    なお、jqueryを使わないJavascriptの場合はイベントが発生します。
    どうぞよろしくお願いいたします。


    -------------------------
    <html>
    <head>
    <script src="http://code.jquery.com/jquery.min.js"></script>

    <script type="text/javascript">

    $(function() {
    $("#sb").change(function() {
    alert("change!");
    });
    });

    </script>
    </head>
    <body>

    <form>
    <select id="sb">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    </select>
    </form>

    </body>
    </html>
    -------------------------

    Dim SelectElement As HtmlElement = WebBrowser1.Document.GetElementById("sb")

    SelectElement.GetElementsByTagName("option").Item(2).SetAttribute("selected", "true")
    SelectElement.RaiseEvent("onChange")
引用返信 削除キー/
■33446 / inTopicNo.2)  Re[1]: webbrowserでjqueryのイベントを発生させたい
□投稿者/ 魔界の仮面弁士 大御所(1042回)-(2016/08/12(Fri) 13:37:13)
  • アイコンNo33445に返信(しろろんさんの記事)
    > jqueryのイベントを動作させるためにはどうすればいいのでしょうか?

    FEATURE_BROWSER_EMULATION が設定されていないでしょうか?
    もし設定されていたら、解除してから試してみてください。
引用返信 削除キー/
■33447 / inTopicNo.3)  Re[2]: webbrowserでjqueryのイベントを発生させたい
□投稿者/ 魔界の仮面弁士 大御所(1043回)-(2016/08/12(Fri) 14:43:13)
  • アイコンNo33446に追記(魔界の仮面弁士の記事)
    > FEATURE_BROWSER_EMULATION が設定されていないでしょうか?

    以下、解説漏れへの補足と対処策。

    ご存知かと思いますが、FEATURE_BROWSER_EMULATION 指定が無い場合、
    WebBrowser は、既定で IE7 モードにて駆動します。


    また、HtmlElement.RaiseEvent メソッドは、
    IHTMLElement3.FireEvent に相当する機能ですが、
    実はこれ、IE11 モードだと着火しない仕様です。
    https://msdn.microsoft.com/ja-jp/library/ff986080.aspx


    IE11 モードでイベントを発生させたいのであれば、
    IEventTarget.dispatchEvent を用いる必要があります。
    https://msdn.microsoft.com/en-us/library/ff975826.aspx

    残念ながらマネージ版 WebBrowserでは、
    この機能がカプセル化されていないようなので、
    IE11 モードの場合、少々面倒なコーディングが必要になります。

    SelectElement.GetElementsByTagName("option").Item(2).SetAttribute("selected", "True")

    Dim doc = WebBrowser1.Document.DomDocument
    Dim evt = CallByName(doc, "createEvent", CallType.Method, "HTMLEvents")
    CallByName(evt, "initEvent", CallType.Method, "change", True, False)
    SelectElement.InvokeMember("dispatchEvent", evt)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(evt)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(doc)
引用返信 削除キー/
■33448 / inTopicNo.4)  Re[3]: webbrowserでjqueryのイベントを発生させたい
□投稿者/ しろろん 一般人(2回)-(2016/08/12(Fri) 17:22:47)
  • アイコンNo33447に返信(魔界の仮面弁士さんの記事)

    返信ご丁寧にありがとうございました!

    ご推測の通り
    FEATURE_BROWSER_EMULATIOでIE11に設定していました。
    IE10モードではjqueryも動作したため、今回はIE10モードで行くことにします。

    どうもありがとうございました!!

解決み!
引用返信 削除キー/
■33759 / inTopicNo.5)  Re[3]: webbrowserでjqueryのイベントを発生させたい
□投稿者/ C#びぎなー 一般人(1回)-(2017/12/22(Fri) 16:42:50)
  • アイコンNo33447に返信(魔界の仮面弁士さんの記事)
    > ■No33446に追記(魔界の仮面弁士の記事)
    >>FEATURE_BROWSER_EMULATION が設定されていないでしょうか?
    >

    >
    >
    > IE11 モードでイベントを発生させたいのであれば、
    > IEventTarget.dispatchEvent を用いる必要があります。
    > https://msdn.microsoft.com/en-us/library/ff975826.aspx
    >
    > 残念ながらマネージ版 WebBrowserでは、
    > この機能がカプセル化されていないようなので、
    > IE11 モードの場合、少々面倒なコーディングが必要になります。
    >
    > SelectElement.GetElementsByTagName("option").Item(2).SetAttribute("selected", "True")
    >
    > Dim doc = WebBrowser1.Document.DomDocument
    > Dim evt = CallByName(doc, "createEvent", CallType.Method, "HTMLEvents")
    > CallByName(evt, "initEvent", CallType.Method, "change", True, False)
    > SelectElement.InvokeMember("dispatchEvent", evt)
    > System.Runtime.InteropServices.Marshal.ReleaseComObject(evt)
    > System.Runtime.InteropServices.Marshal.ReleaseComObject(doc)


    魔界の仮面弁士 様

    お世話になっております。

    C#のWebBrowserかつIE11の環境で開発をしております。


    本件同様の問題にぶつかり調べていると
    本サイトに辿り着きました。

    C#かつIE11 モードでイベントを発生させたい場合
    どのように実装すればよろしいでしょうか。

    お忙しいところ申し訳ございません。

    C#での開発が今回初めて勉強不足でおはずかしい限りではございますが
    ご教授くださいますようよろしくお願いいたします。

引用返信 削除キー/
■33760 / inTopicNo.6)  【お願い】新しいスレッドでご投稿ください
□投稿者/ 管理人 大御所(1529回)-(2017/12/23(Sat) 03:04:22)
  • アイコンNo33759に返信(C#びぎなーさんの記事)

    ルール違反という訳ではありませんが、新しい質問は別のスレッドをたてていただいた方が分かりやすいと思いますので、お手数ですが、上部メニューの「新規作成」からもう一度投稿していただけないでしょうか?その際は、不要な引用は削除してください(「 No33447 の投稿について、質問があります」のような感じで結構です)。

    さらに、ご利用のC#のバージョン(dynamic型が使えるか)を書いていただけると、より良い結果が得られるかもしれません。

    もし「書き込みのルールについて」をまだお読みでない場合は、まずお読みいただいてから、ご投稿ください。

    なおこの投稿への返信は必要ありません。

    よろしくお願いいたします。
解決み!
引用返信 削除キー/
■33761 / inTopicNo.7)  Re[5]: 【お願い】新しいスレッドでご投稿ください
□投稿者/ C#びぎなー 一般人(2回)-(2017/12/23(Sat) 17:01:55)
  • アイコン管理人 様


    ご指摘の新規にスレッドをたてる旨承知しました。

    私の該当記事を削除しようとしましたが
    「エラー : 返信の付いている記事は削除できません。」
    と表示され、削除できませんでした。

    ご迷惑をお掛けし申し訳ございませんでした。

引用返信 削除キー/
■33765 / inTopicNo.8)  Re[6]: 【お願い】新しいスレッドでご投稿ください
□投稿者/ 管理人 大御所(1530回)-(2017/12/24(Sun) 02:24:48)
  • アイコン2017/12/24(Sun) 02:40:21 編集(投稿者)

    No33761に返信(C#びぎなーさんの記事)

    前回の投稿で「返信不要」とさせていただいたのは、「解決済み」が消えてしまうのを防ぐ目的がありました。今度こそは、返信しないでください。

    なお投稿が削除できない理由は、「書き込みのルールについて」にありますので、必ずお読みください。

    追記:C#びぎなーさんが、 No33762 に新規ご投稿いただいたことを追記します。
解決み!
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -