mirror of
https://github.com/ankitects/anki.git
synced 2025-11-07 05:07:10 -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 { ReviewerRequest } from "../reviewer/reviewerRequest";
|
||||||
import type { InnerReviewerRequest } from "./innerReviewerRequest";
|
import type { InnerReviewerRequest } from "./innerReviewerRequest";
|
||||||
|
|
||||||
|
function postParentMessage(message: ReviewerRequest) {
|
||||||
|
window.parent.postMessage(
|
||||||
|
message,
|
||||||
|
"*",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
declare const MathJax: any;
|
declare const MathJax: any;
|
||||||
const urlParams = new URLSearchParams(location.search);
|
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");
|
const base = document.createElement("base");
|
||||||
base.href = "/";
|
base.href = "/";
|
||||||
document.head.appendChild(base);
|
document.head.appendChild(base);
|
||||||
|
|
||||||
function postParentMessage(message: ReviewerRequest) {
|
|
||||||
window.parent.postMessage(
|
|
||||||
message,
|
|
||||||
"*",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function pycmd(cmd: string) {
|
function pycmd(cmd: string) {
|
||||||
const match = cmd.match(/play:(q|a):(\d+)/);
|
const match = cmd.match(/play:(q|a):(\d+)/);
|
||||||
if (match) {
|
if (match) {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,11 @@ export class ReviewerState {
|
||||||
}
|
}
|
||||||
case "typed": {
|
case "typed": {
|
||||||
this.currentTypedAnswer = e.data.value;
|
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));
|
iframe.addEventListener("load", this.onReady.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
onKeyDown(e: KeyboardEvent) {
|
handleKeyPress(key: string) {
|
||||||
switch (e.key) {
|
switch (key) {
|
||||||
case "1": {
|
case "1": {
|
||||||
this.easeButtonPressed(0);
|
this.easeButtonPressed(0);
|
||||||
break;
|
break;
|
||||||
|
|
@ -92,6 +97,10 @@ export class ReviewerState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onKeyDown(e: KeyboardEvent) {
|
||||||
|
this.handleKeyPress(e.key);
|
||||||
|
}
|
||||||
|
|
||||||
public registerShortcuts() {
|
public registerShortcuts() {
|
||||||
document.addEventListener("keydown", this.onKeyDown.bind(this));
|
document.addEventListener("keydown", this.onKeyDown.bind(this));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,9 @@ interface UpdateTypedAnswerMessage {
|
||||||
value: string;
|
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