Prevent action on contentEditable divs.
This commit is contained in:
parent
83d84e5a93
commit
9b8e500927
@ -133,28 +133,32 @@ class ActionHandler {
|
|||||||
// don't do shit on invalid value of state
|
// don't do shit on invalid value of state
|
||||||
}
|
}
|
||||||
|
|
||||||
preventAction() {
|
preventAction(event) {
|
||||||
var activeElement = document.activeElement;
|
var activeElement = document.activeElement;
|
||||||
|
|
||||||
if(this.logger.canLog('keyboard')) {
|
if(this.logger.canLog('keyboard')) {
|
||||||
this.logger.pause(); // temp disable to avoid recursing;
|
this.logger.pause(); // temp disable to avoid recursing;
|
||||||
|
const preventAction = this.preventAction();
|
||||||
|
this.logger.resume(); // undisable
|
||||||
|
|
||||||
this.logger.log('info', 'keyboard', "[ActionHandler::preventAction] Testing whether we're in a textbox or something. Detailed rundown of conditions:\n" +
|
this.logger.log('info', 'keyboard', "[ActionHandler::preventAction] Testing whether we're in a textbox or something. Detailed rundown of conditions:\n" +
|
||||||
"is full screen? (yes->allow):", PlayerData.isFullScreen(),
|
"is full screen? (yes->allow):", PlayerData.isFullScreen(),
|
||||||
"\nis tag one of defined inputs? (yes->prevent):", this.inputs.indexOf(activeElement.tagName.toLocaleLowerCase()) !== -1,
|
"\nis tag one of defined inputs? (yes->prevent):", this.inputs.indexOf(activeElement.tagName.toLocaleLowerCase()) !== -1,
|
||||||
"\nis role = textbox? (yes -> prevent):", activeElement.getAttribute("role") === "textbox",
|
"\nis role = textbox? (yes -> prevent):", activeElement.getAttribute("role") === "textbox",
|
||||||
"\nis type === 'text'? (yes -> prevent):", activeElement.getAttribute("type") === "text",
|
"\nis type === 'text'? (yes -> prevent):", activeElement.getAttribute("type") === "text",
|
||||||
|
"\nevent.target.isContentEditable? (yes -> prevent):", event.target.isContentEditable,
|
||||||
"\nis keyboard local disabled? (yes -> prevent):", this.keyboardLocalDisabled,
|
"\nis keyboard local disabled? (yes -> prevent):", this.keyboardLocalDisabled,
|
||||||
"\nis keyboard enabled in settings? (no -> prevent)", this.settings.keyboardShortcutsEnabled(window.location.hostname),
|
"\nis keyboard enabled in settings? (no -> prevent)", this.settings.keyboardShortcutsEnabled(window.location.hostname),
|
||||||
"\nwill the action be prevented? (yes -> prevent)", this.preventAction(),
|
"\nwill the action be prevented? (yes -> prevent)", preventAction,
|
||||||
"\n-----------------{ extra debug info }-------------------",
|
"\n-----------------{ extra debug info }-------------------",
|
||||||
"\ntag name? (lowercase):", activeElement.tagName, activeElement.tagName.toLocaleLowerCase(),
|
"\ntag name? (lowercase):", activeElement.tagName, activeElement.tagName.toLocaleLowerCase(),
|
||||||
"\nrole:", activeElement.getAttribute('role'),
|
"\nrole:", activeElement.getAttribute('role'),
|
||||||
"\ntype:", activeElement.getAttribute('type'),
|
"\ntype:", activeElement.getAttribute('type'),
|
||||||
"insta-fail inputs:", this.inputs
|
"\ninsta-fail inputs:", this.inputs,
|
||||||
|
"\nevent:", event,
|
||||||
|
"\nevent.target:", event.target
|
||||||
);
|
);
|
||||||
|
|
||||||
this.logger.resume(); // undisable
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// lately youtube has allowed you to read and write comments while watching video in
|
// lately youtube has allowed you to read and write comments while watching video in
|
||||||
@ -175,6 +179,9 @@ class ActionHandler {
|
|||||||
if (activeElement.getAttribute("role") === "textbox") {
|
if (activeElement.getAttribute("role") === "textbox") {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (event.target.isContentEditable) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (activeElement.getAttribute("type") === "text") {
|
if (activeElement.getAttribute("type") === "text") {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -265,7 +272,7 @@ class ActionHandler {
|
|||||||
handleKeyup(event) {
|
handleKeyup(event) {
|
||||||
this.logger.log('info', 'keyboard', "%c[ActionHandler::handleKeyup] we pressed a key: ", "color: #ff0", event.key , " | keyup: ", event.keyup, "event:", event);
|
this.logger.log('info', 'keyboard', "%c[ActionHandler::handleKeyup] we pressed a key: ", "color: #ff0", event.key , " | keyup: ", event.keyup, "event:", event);
|
||||||
|
|
||||||
if (this.preventAction()) {
|
if (this.preventAction(event)) {
|
||||||
this.logger.log('info', 'keyboard', "[ActionHandler::handleKeyup] we are in a text box or something. Doing nothing.");
|
this.logger.log('info', 'keyboard', "[ActionHandler::handleKeyup] we are in a text box or something. Doing nothing.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -276,7 +283,7 @@ class ActionHandler {
|
|||||||
handleKeydown(event) {
|
handleKeydown(event) {
|
||||||
this.logger.log('info', 'keyboard', "%c[ActionHandler::handleKeydown] we pressed a key: ", "color: #ff0", event.key , " | keydown: ", event.keydown, "event:", event)
|
this.logger.log('info', 'keyboard', "%c[ActionHandler::handleKeydown] we pressed a key: ", "color: #ff0", event.key , " | keydown: ", event.keydown, "event:", event)
|
||||||
|
|
||||||
if (this.preventAction()) {
|
if (this.preventAction(event)) {
|
||||||
this.logger.log('info', 'keyboard', "[ActionHandler::handleKeydown] we are in a text box or something. Doing nothing.");
|
this.logger.log('info', 'keyboard', "[ActionHandler::handleKeydown] we are in a text box or something. Doing nothing.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user