0

GeckoFX Web コントロールを使用して、Web ページで Enter キー プレス イベントを送信する必要があります。

SendKeys.Send({ENTER}) を使用できません

WebPage で Javascript 経由で入力を送信する方法はありますか?

4

2 に答える 2

1

ここにブードゥーの魔法があります:

C# COM バージョンでは、GeckoWebBrowser の GeckoNode に ENTER キー押下をディスパッチします。残念ながら、GeckoFX 18 で適切なラッパーが見つからなかったため、すべての作業は xpcom を介して行われます。

13 は入力用のコードです。文字を送信する必要がある場合は、0 に設定し、charcode を InitKeyEvent の最後のパラメーターとして使用します。

ここで e は、キープレスをディスパッチするオブジェクトです。

 nsIDOMKeyEvent Event = Xpcom.QueryInterface<nsIDOMKeyEvent>(Browser.Window.DomWindow.GetDocumentAttribute().CreateEvent(new nsAString("KeyEvents")));
 Event.InitKeyEvent(new nsAString("keypress"), true, true, Browser.Window.DomWindow, false, false, false, false, (uint)13, (uint)0);
 Xpcom.QueryInterface<nsIDOMEventTarget>(e.DomObject).DispatchEvent(Event);

JavaScript バージョン。javascript を注入できる場合、これは javascript 環境内から同じことを行います

 var Event = document.createEvent("KeyEvents");
 Event.initKeyEvent('keypress', true, true, window, false, false, false, false, 13, 0);
 e.dispatchEvent(Event);
于 2013-04-18T00:27:56.003 に答える
1

geckofx を使用しているため、nsIDOMWindowUtils インターフェイスを使用してキープレスを送信できます。

    var GeckoWebBrowser browser = ...;
    nsIDOMWindowUtils utils = Xpcom.QueryInterface<nsIDOMWindowUtils>(browser.Window.DomWindow);
    using (nsAString type = new nsAString("keypress"))
    {
      utils.SendKeyEvent(type, 0, 13, 0, false);
    }

UniversalXPConnect 特権が必要なため、通常は通常の JavaScript から nsIDOMWindowUtils インターフェースを使用できないことに注意してください。

于 2012-02-09T05:21:40.227 に答える