From 3c1af79d7537892e681bb78c7190c61e2cd5bebf Mon Sep 17 00:00:00 2001 From: Xinyun Zhang <58672569+xinyun2020@users.noreply.github.com> Date: Sat, 18 Oct 2025 00:57:48 +1100 Subject: [PATCH] feat: add fallback for invalid url to combine with suffix (enable https:// frame for any url) --- src/frame.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/frame.ts b/src/frame.ts index 940d55a..b57c8e0 100644 --- a/src/frame.ts +++ b/src/frame.ts @@ -44,23 +44,31 @@ export class CustomFrame { this.frame.addClass(`custom-frames-${getId(this.data)}`); this.frame.setAttribute("style", style); - let src = new URL(this.data.url); + let srcUrl; + try { + srcUrl = new URL(this.data.url); + } catch (e) { + // fallback: concat url and suffix directly if base URL is invalid + srcUrl = new URL(this.data.url + (urlSuffix || "")); + urlSuffix = null; + } if (urlSuffix) { - let suffix = new URL(urlSuffix, src.origin); + const suffixUrl = new URL(urlSuffix, srcUrl.origin); - suffix.searchParams.forEach((value, key) => { - src.searchParams.set(key, value); + suffixUrl.searchParams.forEach((value, key) => { + srcUrl.searchParams.set(key, value); }); - if (suffix.pathname !== "/") { - src.pathname += suffix.pathname; + if (suffixUrl.pathname !== "/") { + srcUrl.pathname = srcUrl.pathname.replace(/\/$/, "") + suffixUrl.pathname; } - src.hash = suffix.hash || src.hash; + if (suffixUrl.hash) { + srcUrl.hash = suffixUrl.hash; + } } - - this.frame.setAttribute("src", src.toString()); + this.frame.setAttribute("src", srcUrl.toString()); } refresh(): void {