GE102 · Speaking · Lock & Anti-Copy Patcher

วิธีใช้: เปิดไฟล์นี้ → ลาก-วาง Week3-8_Speaking_CLEAN_v9_Dialogue.html → กด Patch & Download → จะได้ไฟล์ใหม่ที่ กันคัดลอก/กันแปล และ ล็อกทั้งหน้า หลังส่งงาน

ลาก-วางไฟล์ .html ที่นี่ หรือคลิกเพื่อเลือก
ยังไม่มีไฟล์ที่เลือก
แพตช์นี้เพิ่มอะไรในไฟล์เดิม?
  • เพิ่ม meta notranslate และ CSS กันคัดลอก/กันเลือกข้อความทั้งหน้า (ยกเว้น input/textarea)
  • บล็อก context menu / copy / cut / select / drag (ยกเว้นในช่องกรอก)
  • หลัง “ส่งงาน” → ล็อกทั้งหน้า (ปิดอินพุต/ปุ่มทั้งหมด ยกเว้นปุ่ม Reset) + แสดงแบนเนอร์ “ส่งแล้ว: หน้าถูกล็อก”
  • รองรับฟังก์ชันส่งเดิมชื่อ exportPNG() และ/หรือปุ่มที่มีข้อความ “ส่งงาน”, “ส่งคะแนน”, “ส่งงานเขียน” (จะล็อกหลังส่งสำเร็จ)
  • หากไฟล์เดิมไม่มี #resetAll จะเพิ่มปุ่มลอย “เริ่มรอบใหม่” ให้อัตโนมัติ เพื่อล้างสถานะ/ปลดล็อก
`.trim(); function ensureHead(html){ if(!/<\/head>/i.test(html)){ return '\n' + html; } return html; } function injectIntoHead(html, snippet){ return html.replace(/<\/head>/i, snippet + '\n'); } function injectBeforeBodyEnd(html, snippet){ if(/<\/body>/i.test(html)) return html.replace(/<\/body>/i, snippet + '\n'); return html + '\n' + snippet; } function patchHtml(src){ let h = src; h = ensureHead(h); // add anti-translate/anti-copy meta+css if(!h.includes('id="antiCopyStyle"')) h = injectIntoHead(h, META); if(!h.includes('id="lockFullPageCSS"')) h = injectIntoHead(h, CSS_LOCK); // add lock script if(!h.includes('LOCK-WHOLE-PAGE PATCH')) h = injectBeforeBodyEnd(h, JS_PATCH); // also mark h = h.replace(/]*)>/i, (m,attrs)=>{ if(/translate=/.test(attrs)) return m; return ``; }); // add body nocopy class on load via inline fallback if(!/document\.body\.classList\.add\('nocopy'/.test(h)){ // already included in JS_PATCH; skip } return h; } })();