mirror of
https://github.com/ankitects/anki.git
synced 2025-11-06 12:47:11 -05:00
Fix: Handle Inner iframe keypresses
This commit is contained in:
parent
4144fefcd7
commit
dc016c509a
3 changed files with 30 additions and 10 deletions
|
|
@ -8,6 +8,13 @@ import { enableNightMode } from "../reviewer/reviewer";
|
|||
import type { ReviewerRequest } from "../reviewer/reviewerRequest";
|
||||
import type { InnerReviewerRequest } from "./innerReviewerRequest";
|
||||
|
||||
function postParentMessage(message: ReviewerRequest) {
|
||||
window.parent.postMessage(
|
||||
message,
|
||||
"*",
|
||||
);
|
||||
}
|
||||
|
||||
declare const MathJax: any;
|
||||
const urlParams = new URLSearchParams(location.search);
|
||||
|
||||
|
|
@ -50,17 +57,16 @@ addEventListener("message", async (e: MessageEvent<InnerReviewerRequest>) => {
|
|||
}
|
||||
});
|
||||
|
||||
addEventListener("keydown", (e) => {
|
||||
if (e.key.length == 1 && "1234 ".includes(e.key) && !document.activeElement?.matches("#typeans")) {
|
||||
postParentMessage({ type: "keyPress", key: e.key });
|
||||
}
|
||||
});
|
||||
|
||||
const base = document.createElement("base");
|
||||
base.href = "/";
|
||||
document.head.appendChild(base);
|
||||
|
||||
function postParentMessage(message: ReviewerRequest) {
|
||||
window.parent.postMessage(
|
||||
message,
|
||||
"*",
|
||||
);
|
||||
}
|
||||
|
||||
function pycmd(cmd: string) {
|
||||
const match = cmd.match(/play:(q|a):(\d+)/);
|
||||
if (match) {
|
||||
|
|
|
|||
|
|
@ -54,6 +54,11 @@ export class ReviewerState {
|
|||
}
|
||||
case "typed": {
|
||||
this.currentTypedAnswer = e.data.value;
|
||||
break;
|
||||
}
|
||||
case "keyPress": {
|
||||
this.handleKeyPress(e.data.key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -63,8 +68,8 @@ export class ReviewerState {
|
|||
iframe.addEventListener("load", this.onReady.bind(this));
|
||||
}
|
||||
|
||||
onKeyDown(e: KeyboardEvent) {
|
||||
switch (e.key) {
|
||||
handleKeyPress(key: string) {
|
||||
switch (key) {
|
||||
case "1": {
|
||||
this.easeButtonPressed(0);
|
||||
break;
|
||||
|
|
@ -92,6 +97,10 @@ export class ReviewerState {
|
|||
}
|
||||
}
|
||||
|
||||
onKeyDown(e: KeyboardEvent) {
|
||||
this.handleKeyPress(e.key);
|
||||
}
|
||||
|
||||
public registerShortcuts() {
|
||||
document.addEventListener("keydown", this.onKeyDown.bind(this));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,4 +11,9 @@ interface UpdateTypedAnswerMessage {
|
|||
value: string;
|
||||
}
|
||||
|
||||
export type ReviewerRequest = AudioMessage | UpdateTypedAnswerMessage;
|
||||
interface KeyPressMessage {
|
||||
type: "keyPress";
|
||||
key: string;
|
||||
}
|
||||
|
||||
export type ReviewerRequest = AudioMessage | UpdateTypedAnswerMessage | KeyPressMessage;
|
||||
|
|
|
|||
Loading…
Reference in a new issue