Remove sandbox mode settings and iframe sandbox branching
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
10
index.js
10
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) {}
|
||||
|
||||
@@ -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) {}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -41,10 +41,6 @@
|
||||
<div class="section-divider">渲染模式
|
||||
<hr class="sysHR" />
|
||||
</div>
|
||||
<div class="flex-container">
|
||||
<input type="checkbox" id="xiaobaix_sandbox" />
|
||||
<label for="xiaobaix_sandbox">沙盒模式</label>
|
||||
</div>
|
||||
<div class="flex-container">
|
||||
<input type="checkbox" id="xiaobaix_use_blob" />
|
||||
<label for="xiaobaix_use_blob" class="has-tooltip" data-tooltip="大型html适用">启用Blob渲染</label>
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user