2013-04-18 7 views
6

私は、ユーザーが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がそのリンクに関する情報を取得することがわかります。

+3

を、なぜあなたは単に直接Googleの元の機能をトリガするのではなく、シミュレートされたキーストロークと間接的にそれをトリガーしようと模索していませんか? –

+0

@Kennethそれは重複していないので私はすでにここですべてのコードをテストしたし、何も動作しません。私が言ったように、そのcontenteditable divの動作は本当に奇妙なので、実際にはそのページ内のイベント(実際にはイベントは発生させるが、要素$( ".Cla")のkeydownスペースバー)を起動してシミュレートすることができます。 ").children()。eq(1).get(0) –

+0

キーをシミュレートしようとするのではなく、コードを直接実行しようとしましたか? –

答えて

0

このjQueryプラグインを見ている:またSendKeys

関連する問題