Я пишу расширение для браузера, которое должно прикреплять обработчики к событиям keyup и keydown на всех страницах.Я могу заставить его работать довольно хорошо с помощью следующего кода скрипта контента.
document.addEventListener("keydown",keyDown, true);
document.addEventListener("keyup", keyUp, true);
Я не могу заставить это работать в Gmail.В частности, я не могу заставить его работать при составлении тела нового письма.Это будет работать везде, где я тестировал.Я думаю, что проблема в том, что Gmail вызывает stopPropagation
на всех событиях клавиатуры, но трудно отладить их свернутый код.Я думал, что установка третьего параметра на true
приведет к тому, что событие будет записано во время CAPTURE_PHASE
, но это не работает.
Как мне захватить события keyup
и keydown
при создании нового тела в Gmail с помощью скрипта контента Google Chrome?
Редактировать:
Я гарантировалчто мои скрипты содержимого внедряются во все iframes DOM, добавляя "all_frames": true,
в мой манифест.Я даже пытался использовать следующий код:
document.addEventListener("DOMNodeInserted", function (event) {
if(event.type === "DOMNodeInserted") {
if(event.srcElement.nodeName === "IFRAME") {
console.log(event.srcElement.nodeName + " iframe detected");
event.srcElement.addEventListener("keydown", function(kevent) {
document.dispatchEvent(kevent);
}, true);
event.srcElement.addEventListener("keyup", function(kevent) {
document.dispatchEvent(kevent);
}, true);
}
}
},true);
Это все еще не решает проблему с Gmail.