diff --git a/js/infantry_sequence.js b/js/infantry_sequence.js index d8e7874..dc72f1e 100644 --- a/js/infantry_sequence.js +++ b/js/infantry_sequence.js @@ -58,6 +58,10 @@ let iseq_PlayerTimers = {}; let iseq_PreviewState = {}; let iseq_DraggedIdx = null; +function iseq_escapeHtml(s) { + return String(s).replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c])); +} + function iseq_isValidString(s) { return /^[a-zA-Z0-9_-]+$/.test(s); } @@ -689,13 +693,13 @@ export function initSequenceEditor() { document.getElementById('seqBtnDeleteSelected').onclick = async () => { if (iseq_SelectedIndices.size === 0) return; const sorted = [...iseq_SelectedIndices].sort((a, b) => a - b); - let msg = `
Are you sure you want to delete these ${iseq_SelectedIndices.size} actions?
`; + let msg = '
Are you sure you want to delete these ' + iseq_SelectedIndices.size + ' actions?
'; msg += `
`; for (const idx of sorted) { const e = iseq_Entries[idx]; msg += `
`; - msg += `${e.name}`; - msg += `${e.startFrame}, ${e.frameCount}, ${e.facingMult}${e.direction ? ', ' + e.direction : ''}`; + msg += `${iseq_escapeHtml(e.name)}`; + msg += `${e.startFrame}, ${e.frameCount}, ${e.facingMult}${e.direction ? ', ' + iseq_escapeHtml(e.direction) : ''}`; msg += `
`; } msg += `
`;