Защитить <html> от remove()

148
13 марта 2019, 13:00

У меня есть html страница со скриптом следующего содержания -

document.getElementsByTagName('html')[0].remove();

Естественно каждый раз при загрузке страницы у меня удаляется главный html элемент. Как я могу открыть страницу в браузере, минуя этот скрипт, но выполняя все остальные? Страница лежит на чужом сервере, просто удалить скрипт я не могу. Через отладчик хрома тоже не выходит, нельзя изменять выполняемый код.

Answer 1

Ничего непонятно. Сервер чужой, а что Ваше?

Сначала воспроизведем поведение, которое Вы наблюдаете. div-а со словом "test" не наблюдaется:

document.getElementsByTagName('html')[0].remove();
<div>test</div>

Теперь "врежемся" в метод документа, чтобы перехватить выбор по тэгу:

var oldGetByTag = document.getElementsByTagName.bind(document); 
document.getElementsByTagName = function(tag) { 
  console.log(tag); 
  if (tag == 'html') { 
    return [document.createElement("div")]; 
  } 
  return oldGetByTag(tag); 
}; 
 
console.log(document.getElementsByTagName('html')); 
document.getElementsByTagName('html')[0].remove();
<div>test</div>

Но это я, конечно, намудрил. Можно проще:

document.querySelector("html").remove = function() { 
  console.log("do nothing"); 
} 
 
document.getElementsByTagName('html')[0].remove();
<div>test</div>

Answer 2
HTMLHtmlElement.prototype.remove = function () {}
READ ALSO
Железнодорожные сообщения Maps API

Железнодорожные сообщения Maps API

Реализую информационную систему ж/д перевозок

179
Как найти многоуровневый Jquery Nestable?

Как найти многоуровневый Jquery Nestable?

Я нашел этот плагин https://githubcom/dbushell/Nestable и использовал его в своем проекте

176
Структура БД при работе с проектной системой

Структура БД при работе с проектной системой

Всем приветВстал вопрос про CRM-системы с абонентской платой (а-ля битрикс24, amocrm)

167