mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 14:30:02 -04:00
33 lines
726 B
TypeScript
33 lines
726 B
TypeScript
import { ScramjetController } from ".";
|
|
import type { ScramjetClient } from "../client/client";
|
|
import { SCRAMJETCLIENT, SCRAMJETFRAME } from "../symbols";
|
|
|
|
export class ScramjetFrame extends EventTarget {
|
|
constructor(
|
|
private controller: ScramjetController,
|
|
public frame: HTMLIFrameElement
|
|
) {
|
|
super();
|
|
frame[SCRAMJETFRAME] = this;
|
|
}
|
|
|
|
get client(): ScramjetClient {
|
|
return this.frame.contentWindow.window[SCRAMJETCLIENT];
|
|
}
|
|
|
|
go(url: string | URL) {
|
|
if (url instanceof URL) url = url.toString();
|
|
|
|
dbg.log("navigated to", url);
|
|
|
|
this.frame.src = this.controller.encodeUrl(url);
|
|
}
|
|
|
|
back() {
|
|
this.frame.contentWindow?.history.back();
|
|
}
|
|
|
|
forward() {
|
|
this.frame.contentWindow?.history.forward();
|
|
}
|
|
}
|