2013-04-18 7 views
6

Ich erstelle eine Erweiterung, wo ich eine Leertaste Keydown auf dem zufrieden stellbaren Div simulieren soll, wo der Benutzer die Nachricht (Status) in Google Plus eingibt.Auslösen von Keydown auf Plus.Google.com

Wenn Sie plus.google.com öffnen und auf das Feld klicken, in das Sie die Nachricht eingeben müssen, werden Sie feststellen, dass Sie bei der Eingabe eines Links in der Nachricht {Leertaste} bemerken, dass Google Titel abruft. Bild und Beschreibung dieses Links. Ich versuche 3 Tage, die Leertaste Keydown zu simulieren. Ich kann mouseover bereits über die Elemente des Formulars simulieren, ich kann click() in der Sendetaste simulieren, aber ich kann immer noch nicht die Leertaste keydown simulieren.

Bisher mein bestes Code ist:

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); 

Sie so viel Dank.

EDIT:

Ich weiß nicht, ob es hilft Ihnen, einen Test machen, aber ich rate Ihnen, dies zu tun:

opened_window = window.open("http://plus.google.com"); 

nach dem Klick in den div um es zu erweitern und danach nur diese laufen code:

$(".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); 

Aus irgendeinem Grund löst dies nicht den Abruf von Link informatino aus. Aber wenn Sie einfach in das Div klicken und die Leertaste drücken, werden Sie sehen, dass Google Informationen über diesen Link abruft.

+3

Auch, warum Sie einfach nicht erforschen Auslösung direkt ursprüngliche Funktionalität von Google, anstatt zu versuchen, sie indirekt mit einem simulierten Tastendruck auslösen? –

+0

@Kenneth es ist nicht dupliziert, weil ich bereits alle Codes hier in der SO getestet und keiner funktioniert. Wie gesagt, es ist wirklich komisch, das Verhalten auf dieser zufrieden stellenden Div, denn ich kann tatsächlich jedes Event auf dieser Seite feuern und simulieren, wirklich jedes Event außer der Keydown-Leertaste auf dem Element $ (".Cla"). Find (".be.cB ") .children(). eq (1) .get (0) –

+0

Haben Sie versucht, den Code direkt abzufeuern, anstatt zu versuchen, einen Tastendruck zu simulieren? –

Antwort

0

Haben Sie einen Blick auf dieser jQuery-Plugin: SendKeys