หากคุณต้องการเปิดใช้งานแท็กสคริปต์อีกครั้งในภายหลังวิธีแก้ปัญหาของฉันคือทำลายสภาพแวดล้อมของเบราว์เซอร์เพื่อให้สคริปต์ใด ๆ ที่ทำงานอยู่จะทำให้เกิดข้อผิดพลาดค่อนข้างเร็ว อย่างไรก็ตามมันไม่น่าเชื่อถือทั้งหมดดังนั้นคุณจึงไม่สามารถใช้เป็นคุณสมบัติความปลอดภัยได้
หากคุณพยายามเข้าถึงคุณสมบัติส่วนกลาง Chrome จะทำให้เกิดข้อยกเว้น
setTimeout("Math.random()")
ฉันเขียนทับคุณสมบัติที่เขียนทับได้ทั้งหมดwindow
แต่คุณสามารถขยายเพื่อทำลายฟังก์ชันการทำงานอื่น ๆ ได้
window.allowJSExecution = inhibitJavaScriptExecution();
function inhibitJavaScriptExecution(){
var windowProperties = {};
var Object = window.Object
var console = window.console
var Error = window.Error
function getPropertyDescriptor(object, propertyName){
var descriptor = Object.getOwnPropertyDescriptor(object, propertyName);
if (!descriptor) {
return getPropertyDescriptor(Object.getPrototypeOf(object), propertyName);
}
return descriptor;
}
for (var propName in window){
try {
windowProperties[propName] = getPropertyDescriptor(window, propName)
Object.defineProperty(window, propName, {
get: function(){
throw Error("JavaScript Execution Inhibited")
},
set: function(){
throw Error("JavaScript Execution Inhibited")
},
configurable: true
})
} catch (err) {}
}
return function allowJSExecution(){
for (var propName in window){
if (!(propName in windowProperties)) {
delete windowProperties[propName]
}
}
for (var propName in windowProperties){
try {
Object.defineProperty(window, propName, windowProperties[propName])
} catch (err) {}
}
}
}