На самом деле вся проблема. Вид борьбы с обезьяной. Как получить исходные объекты (Object, Array, Function, String и т. Д.) И их прототипы, если они изменили \ расширенный \ удалили?Как получить исходные исходные объекты браузера, если они изменились?
Единственный вариант, который я вижу сейчас - это динамическое создание кадра - вытаскивание из его собственных объектов - удаление кадра на лету. Возможно, то же самое можно сделать с помощью Web Workers. Но они т. Е.> 9, в которых нет классов DOM, и само по себе так же, как и динамический кадр.
Пример с рамкой
delete Object.prototype.constructor;
delete Object;
console.log(window.__proto__.__proto__.__proto__.constructor); // undefined
// console.log(Object); // undefined
var frame = document.createElement('frame');
document.all[0].appendChild(frame);
var Object = frames[0].Object;
document.all[0].removeChild(frame);
console.log(Object);
Этот теоретический вопрос. Например, мы разрабатываем встроенную библиотеку и не можем знать, когда она будет вызываться, поэтому к моменту ее вызова с помощью собственных объектов браузера можно изменить. Нам нужно получить исходные объекты, исходную среду.
Возможно, есть другие способы решения?
Заранее спасибо.
Не совсем, нет. Я говорю, если пользователь достаточно идиот, чтобы добавить скрипты, которые это делают, это их проблема. Конечно, некоторые из них могут быть извлечены из оставшихся функций, но другие не могут. –