2013-04-18 8 views
6

Tworzę rozszerzenie, w którym muszę zasymulować spację klucza spacji w obszarze contenteditable div, w którym użytkownik wpisuje wiadomość (statusy) w Google Plus.Uaktywnij klucz dodatkowy na Plus.Google.com

Jeśli otworzysz plus.google.com i klikniesz div, w którym musisz wpisać wiadomość, uświadomisz sobie, że po wpisaniu linku w wiadomości i naciśnięciu {spacja} zauważysz, że Google pobiera tytuł, zdjęcie i opis tego linku. Mam 3 dni, próbując symulować keydown spacji. Mogę już symulować przesuwanie kursora myszy nad elementami formularza, mogę symulować click() w przycisku wysyłania, ale nadal nie mogę zasymulować keydown spacji.

tej pory mój najlepszy kod jest:

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

Dziękuję bardzo.

EDIT:

ja nie wiem, czy to pomoże Ci zrobić test, ale radzę to zrobić:

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

po tym kliknij w div, aby go rozwinąć, a potem po prostu uruchomić ten kod:

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

Z jakiegoś powodu nie powoduje to pobrania odnośnika informatino. Ale jeśli po prostu klikniesz div i naciśniesz klawisz spacji, zobaczysz, że Google pobiera informacje o tym linku.

+3

Ponadto, dlaczego nie można po prostu zbadać wyzwalania pierwotnej funkcjonalności Google bezpośrednio, zamiast próbować wyzwolić go pośrednio z symulowaną naciśnięciem klawisza? –

+0

@Kenneth nie jest powielony, ponieważ już przetestowałem WSZYSTKIE kody tutaj w SO i żaden nie działa. Jak już powiedziałem, to naprawdę dziwne zachowanie w tej zadowalającej div, bo tak naprawdę mogę odpalić i symulować dowolne zdarzenie na tej stronie, naprawdę każde wydarzenie, ale klawisz spacji w elemencie $ (". Cla"). Find (". Be.cB ") .children(). eq (1) .get (0) –

+0

Czy próbowałeś wypalić kod bezpośrednio, zamiast próbować symulować naciśnięcie klawisza? –

Odpowiedz

0

Zapraszamy do obejrzenia tej wtyczki jQuery: SendKeys

Powiązane problemy