Это может быть не общеизвестно, но "Javascript on many (all?) modern browsers seems to create variables on the window object for DOM elements with IDs".Почему не удается удалить переменные Javascript, автоматически созданные из DOM?
Зная это, я хотел бы иметь возможность удалить эти переменные, а ниже - некоторый код, который я пробовал без успеха. Также рассмотрим мой скриншот операторов console.log, который сначала указывает why
как не свойство окна (он должен находиться между «webkitUrl» и «window»), но тем не менее в двух консольных.log-операторах, которые сразу же следуют за первым , window/почему показано как div от документа?
Почему эти автоматически генерируемые переменные не удаляются из их родительского объекта, как и любой другой?
<!DOCTYPE html>
<html>
<head>
<script>
setTimeout(function() { //poor man's document/ready
var allElements = document.getElementsByTagName("*"), elementId;
for (var i=allElements.length; i--;) {
elementId = allElements[i].id;
if (elementId && window[elementId] instanceof HTMLElement) {
delete window.why;
console.log(window);
console.log(window.why);
console.log(why);
}
}
});
</script>
</head>
<body>
<div id="why"></div>
</body>
</html>
1) Зачем вы хотите это сделать? 2) свойства 'неконфигурируемые' не могут быть удалены. – 4castle
'delete' работает только с собственными свойствами, а не с унаследованными. Элементы могут располагаться дальше по цепочке прототипов. –
Не может быть сделано и не должно быть проблемой. – adeneo