私は、ユーザーがGoogle Plusのメッセージ(ステータス)を入力するcontenteditable divのスペースバーキーダウンをシミュレートする必要がある拡張機能を作成しています。Plus.Google.comのトリガーkeydown
plus.google.comを開いて、メッセージを入力する必要があるdivをクリックすると、メッセージ内にリンクを入力して{spacebar}を押すと、Googleがタイトル、そのリンクの画像と説明。私は3日間、スペースバーのキーダウンをシミュレートしようとしています。私はすでにフォームの要素上でマウスオーバーをシミュレートすることができますが、私はsendボタンでclick()をシミュレートできますが、まだスペースバーキーダウンをシミュレートすることはできません。
これまでのところ私の最高のコードは次のとおりです。
var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : " ", char : " ", shiftKey : false, keyCode: 32, which: 32, view: window});
//I need to delete the e.keyCode and e.which cause Chrome sets it as a readonly but for some reason if you delete it and assign a new value Chrome accepts (I am very sure this is a serious bug that I discovered in Chrome and that I already reported yesterday in theis bug tracker)
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 32});
delete e.which;
Object.defineProperty(e, "which", {"value" : 32});
$(".Cla").find(".be.c-B").children().eq(1).get(0).dispatchEvent(e);
はありがとうございました。
EDIT:
それはあなたがテストを行う場合に役立ちます私は知らないが、私はあなたがこれを行うの助言:その後
opened_window = window.open("http://plus.google.com");
それを拡大するためにDIVをクリックし、その後だけにこれを実行しますコード:
$(".Cla").find(".be.c-B").children().eq(1).html("The site stackoverflow.com is amazing");
var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : " ", char : " ", shiftKey : false, keyCode: 32, which: 32, view: window});
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 32});
delete e.which;
Object.defineProperty(e, "which", {"value" : 32});
$(".Cla").find(".be.c-B").children().eq(1).get(0).dispatchEvent(e);
何らかの理由で、これはlink informatinoの取得をトリガーしません。しかし、単にdivを押してスペースバーを押すと、Googleがそのリンクに関する情報を取得することがわかります。
を、なぜあなたは単に直接Googleの元の機能をトリガするのではなく、シミュレートされたキーストロークと間接的にそれをトリガーしようと模索していませんか? –
@Kennethそれは重複していないので私はすでにここですべてのコードをテストしたし、何も動作しません。私が言ったように、そのcontenteditable divの動作は本当に奇妙なので、実際にはそのページ内のイベント(実際にはイベントは発生させるが、要素$( ".Cla")のkeydownスペースバー)を起動してシミュレートすることができます。 ").children()。eq(1).get(0) –
キーをシミュレートしようとするのではなく、コードを直接実行しようとしましたか? –