diff --git a/core/iframe-messaging.js b/core/iframe-messaging.js index 8f3fdcb..4b58d10 100644 --- a/core/iframe-messaging.js +++ b/core/iframe-messaging.js @@ -2,9 +2,7 @@ export function getTrustedOrigin() { return window.location.origin; } -export function getIframeTargetOrigin(iframe) { - const sandbox = iframe?.getAttribute?.('sandbox') || ''; - if (sandbox && !sandbox.includes('allow-same-origin')) return 'null'; +export function getIframeTargetOrigin() { return getTrustedOrigin(); } diff --git a/index.js b/index.js index 6496f13..f8b322b 100644 --- a/index.js +++ b/index.js @@ -30,7 +30,6 @@ import { initTts, cleanupTts } from "./modules/tts/tts.js"; extension_settings[EXT_ID] = extension_settings[EXT_ID] || { enabled: true, - sandboxMode: false, recorded: { enabled: true }, templateEditor: { enabled: true, characterBindings: {} }, tasks: { enabled: true, globalTasks: [], processedMessages: [], character_allowed_tasks: [] }, @@ -270,7 +269,7 @@ async function waitForElement(selector, root = document, timeout = 10000) { function toggleSettingsControls(enabled) { const controls = [ - 'xiaobaix_sandbox', 'xiaobaix_recorded_enabled', 'xiaobaix_preview_enabled', + 'xiaobaix_recorded_enabled', 'xiaobaix_preview_enabled', 'scheduled_tasks_enabled', 'xiaobaix_template_enabled', 'xiaobaix_immersive_enabled', 'xiaobaix_fourth_wall_enabled', 'xiaobaix_audio_enabled', 'xiaobaix_variables_panel_enabled', @@ -379,12 +378,6 @@ async function setupSettings() { if (!settings.enabled) toggleSettingsControls(false); - $("#xiaobaix_sandbox").prop("checked", settings.sandboxMode).on("change", async function () { - if (!isXiaobaixEnabled) return; - settings.sandboxMode = $(this).prop("checked"); - saveSettingsDebounced(); - }); - const moduleConfigs = [ { id: 'xiaobaix_recorded_enabled', key: 'recorded' }, { id: 'xiaobaix_immersive_enabled', key: 'immersive', init: initImmersiveMode }, @@ -531,7 +524,6 @@ async function setupSettings() { } ON.forEach(k => setChecked(MAP[k], true)); OFF.forEach(k => setChecked(MAP[k], false)); - setChecked('xiaobaix_sandbox', false); setChecked('xiaobaix_use_blob', false); setChecked('Wrapperiframe', true); try { saveSettingsDebounced(); } catch (e) {} diff --git a/modules/iframe-renderer.js b/modules/iframe-renderer.js index 63f49a5..1c650d1 100644 --- a/modules/iframe-renderer.js +++ b/modules/iframe-renderer.js @@ -358,10 +358,6 @@ export function renderHtmlInIframe(htmlContent, container, preElement) { iframe.setAttribute('scrolling', 'no'); iframe.loading = 'eager'; - if (settings.sandboxMode) { - iframe.setAttribute('sandbox', 'allow-scripts'); - } - const wrapper = getOrCreateWrapper(preElement); wrapper.querySelectorAll('.xiaobaix-iframe').forEach(old => { try { old.src = 'about:blank'; } catch (e) {} diff --git a/modules/template-editor/template-editor.js b/modules/template-editor/template-editor.js index ceb5dfc..ca3a326 100644 --- a/modules/template-editor/template-editor.js +++ b/modules/template-editor/template-editor.js @@ -671,8 +671,6 @@ class IframeManager { static writeContentToIframe(iframe, content) { try { const html = buildWrappedHtml(content); - const sbox = !!(extension_settings && extension_settings[EXT_ID] && extension_settings[EXT_ID].sandboxMode); - if (sbox) iframe.setAttribute('sandbox', 'allow-scripts allow-modals'); iframe.srcdoc = html; const probe = () => { const targetOrigin = getIframeTargetOrigin(iframe); diff --git a/settings.html b/settings.html index 2e471de..4d76b53 100644 --- a/settings.html +++ b/settings.html @@ -41,10 +41,6 @@
渲染模式
-
- - -
@@ -524,7 +520,6 @@ storySummary: 'xiaobaix_story_summary_enabled', tts: 'xiaobaix_tts_enabled', storyOutline: 'xiaobaix_story_outline_enabled', - sandboxMode: 'xiaobaix_sandbox', useBlob: 'xiaobaix_use_blob', wrapperIframe: 'Wrapperiframe', renderEnabled: 'xiaobaix_render_enabled', @@ -541,25 +536,20 @@ if (el) { el.checked = !!enabled; try { $(el).trigger('change'); } catch (e) { } } } function captureStates() { - const out = { modules: {}, sandboxMode: false, useBlob: false, wrapperIframe: false, renderEnabled: true }; - try { MODULE_KEYS.forEach(k => { out.modules[k] = !!(extension_settings[EXT_ID][k] && extension_settings[EXT_ID][k].enabled); }); } catch (e) { } - try { out.sandboxMode = !!extension_settings[EXT_ID].sandboxMode; } catch (e) { } - try { out.useBlob = !!extension_settings[EXT_ID].useBlob; } catch (e) { } - try { out.wrapperIframe = !!extension_settings[EXT_ID].wrapperIframe; } catch (e) { } - try { out.renderEnabled = extension_settings[EXT_ID].renderEnabled !== false; } catch (e) { } + const out = { modules: {}, useBlob: false, wrapperIframe: false, renderEnabled: true }; + try { MODULE_KEYS.forEach(k => { out.modules[k] = !!(extension_settings[EXT_ID][k] && extension_settings[EXT_ID][k].enabled); }); } catch (e) { } + try { out.useBlob = !!extension_settings[EXT_ID].useBlob; } catch (e) { } + try { out.wrapperIframe = !!extension_settings[EXT_ID].wrapperIframe; } catch (e) { } + try { out.renderEnabled = extension_settings[EXT_ID].renderEnabled !== false; } catch (e) { } return out; } function applyStates(st) { if (!st) return; try { Object.keys(st.modules || {}).forEach(k => setModuleEnabled(k, !!st.modules[k])); } catch (e) { } - try { - extension_settings[EXT_ID].sandboxMode = !!st.sandboxMode; - const el = $id('xiaobaix_sandbox'); if (el) { el.checked = !!st.sandboxMode; if (window.isXiaobaixEnabled) try { $(el).trigger('change'); } catch (e) { } } - } catch (e) { } - try { - extension_settings[EXT_ID].useBlob = !!st.useBlob; - const el = $id('xiaobaix_use_blob'); if (el) { el.checked = !!st.useBlob; if (window.isXiaobaixEnabled) try { $(el).trigger('change'); } catch (e) { } } - } catch (e) { } + try { + extension_settings[EXT_ID].useBlob = !!st.useBlob; + const el = $id('xiaobaix_use_blob'); if (el) { el.checked = !!st.useBlob; if (window.isXiaobaixEnabled) try { $(el).trigger('change'); } catch (e) { } } + } catch (e) { } try { extension_settings[EXT_ID].wrapperIframe = !!st.wrapperIframe; const el = $id('Wrapperiframe'); if (el) { el.checked = !!st.wrapperIframe; if (window.isXiaobaixEnabled) try { $(el).trigger('change'); } catch (e) { } } @@ -573,13 +563,9 @@ function applyResetDefaults() { DEFAULTS_ON.forEach(k => setModuleEnabled(k, true)); DEFAULTS_OFF.forEach(k => setModuleEnabled(k, false)); - try { - extension_settings[EXT_ID].sandboxMode = false; const sb = $id(KEY_TO_CHECKBOX.sandboxMode); - if (sb) { sb.checked = false; try { $(sb).trigger('change'); } catch (e) { } } - } catch (e) { } - try { - extension_settings[EXT_ID].useBlob = false; const bl = $id(KEY_TO_CHECKBOX.useBlob); - if (bl) { bl.checked = false; try { $(bl).trigger('change'); } catch (e) { } } + try { + extension_settings[EXT_ID].useBlob = false; const bl = $id(KEY_TO_CHECKBOX.useBlob); + if (bl) { bl.checked = false; try { $(bl).trigger('change'); } catch (e) { } } } catch (e) { } try { extension_settings[EXT_ID].wrapperIframe = true; const wp = $id(KEY_TO_CHECKBOX.wrapperIframe);