Frage

Ich schreibe eine Chrome-Erweiterung, dass startet ein Skript mit einer Tastenkombination. Es funktioniert auf den meisten Seiten, aber ich erkannte, dass auf Gmail dies nicht der Fall. Es scheint, dass alle Tastaturereignisse von Google Mail erfasst werden und sind nicht auf meine Funktion sprudelte

Ich habe einen Content-Skript (in Chrome-Erweiterung, dies zu jeder Seite hinzugefügt wird, Sie mögen), die (vereinfacht natürlich) hat:

document.body.addEventListener('keypress', myFunction, true);
function myFunction(event) {
    console.log("yay, Gmail didn't let me down!");
}

Aber eigentlich Gmail hat mich im Stich gelassen. Ich weiß, dass das Skript is geladen. Ich habe versucht, verschiedene Variationen von window.addEventListener und anderen Event-Arten ohne Erfolg.

Weiß jemand, der eine Art und Weise zu umgehen das? Ich habe versucht zu sehen, ob Greasemonkey-Skript könnte es tun, dass mich hierher gebracht hat: http: // Code. google.com/p/gmail-greasemonkey/ aber das hat mir nicht geholfen.

Danke!

War es hilfreich?

Lösung

Ich weiß nicht, das Innenleben von Tastaturereignis Capturing GMail, aber ich schrieb vor kurzem eine einfache Tastenkombination Navigator (also muss ich die Maus nicht verwenden Links klicken) für Chrome.

Es ist keine Erweiterung, sondern ein Benutzer / Greasemonkey-Skript, aber es ist durch die Eingabe Komma ausgelöst (,) zweimal, und es funktioniert in GMail.

Vielleicht wird es Ihnen helfen, an der Quelle zu suchen. Sie können es hier herunterladen: http://userscripts.org/scripts/show/68609

Andere Tipps

Okay, ich eine funktionierende Lösung haben, Reverse Engineering von der onePassword Plugin. Ich kann nur vermuten, warum das funktioniert, ich gehe davon aus, es ist wegen der Veranstaltung der Eingabeelemente hinzufügen. Allerdings ändert nichts und es nicht mehr funktioniert (der redir Anruf auf dem Boden auf dem Boden ist aus einem bestimmten Grunde)

function redir(e) {
    e.focus();
    var h = document.createEvent("KeyboardEvent");
    h.initKeyboardEvent('keydown', true, true);
    e.dispatchEvent(h)
}
$("input").each(function(t,l) {redir(l)});

document.addEventListener('keydown', function(e) {
    if (e.ctrlKey && e.keyCode) {
      if (e.keyCode == 190) {
        chrome.extension.sendRequest({name: "spot-openPopUp"});
      }
    }
},false);

redir(document.body);

Wie Sie mir gebrauchte Umleitung sehen. Dieses Beispiel ist echt krass btw also nicht nur es verwendet

Sie können einen Prozess der Umleitung versuchen:

if (document.body.onkeypress) {
    // add as event listener instead
    var kpfunc = document.body.onkeypress;
    document.body.addEventListener('keypress', kpfunc, true);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top