В Microsoft IE и (согласно комментариям) Edge, getElementById()
для идентификатора, который является "extTabsBodyEleFile1273551781_renderTo", завершается неудачей.
<!DOCTYPE HTML>
<html>
<body>
<div id="extTabsBodyEleFile1273551781_renderTo"></div>
</body>
</html>
Этот идентификатор был создан автоматически.Любое изменение идентификатора устраняет проблему.Получение родительского элемента div и перечисление его дочерних узлов также включает в себя div.
Ошибка может быть воспроизведена как в IE 11.0.9600.19155, так и в 11.0.9600.18538, но она работает на другом компьютере с IE 11 ... 19155 без проблем.
Ошибка также может быть воспроизведена, если вы откроете консоль разработчика на случайном сайте, измените идентификатор любого элемента в DOM-обозревателе на идентификатор выше и затем попытаетесь получить этот элемент с помощью document.getElementById('extTabsBodyEleFile1273551781_renderTo')
Я понимаю, что это ошибка Edge, и ее исправление будет означать изменение ID.У меня вопрос, почему это происходит, почему это не произошло в одном экземпляре Edge (я не смог найти различия настроек) и как я мог сгенерировать ID, чтобы это больше не повторилось.Это легко изменить в этом месте, но, не зная, почему это произошло, это может произойти снова.
Существует ли известная комбинация хешей или чисел, которую ID не должен иметь?Это устаревшая настройка, которую я мог бы потенциально отключить с помощью мета-тегов?
Надеюсь, этот вопрос не слишком специфичен для SO - его поиск оказался бесплодным из-за множества вопросов, связанных с getElementById.
console.log(document.getElementById('extTabsBodyEleFile1273551781_renderTo'));
<div id="extTabsBodyEleFile1273551781_renderTo"></div>
Обновление:
Кажется, что ID не работает в случае, не учитывающем регистр:
extTabsBodyEleFile1273551781_renderTo
exttabsbodyelefile1273551781_renderto
EXTTABSBODYELEFILE1273551781_RENDERTO
ExttAbsbOdyELEfILE1273551781_rEndErtO
Всевызвать ошибку.
Обновление:
IE-консоль разработчика, по крайней мере, связана с ошибкой.Открытие тестовой HTML-страницы, которая отображает результат попытки извлечь Элемент по этому идентификатору внутри себя, а не регистрировать его на консоли, работает, как и ожидалось, если IE был запущен с закрытой консолью - до тех пор, пока консоль не будет открыта и страница не обновит пару(1-5) раз, после чего ошибка появляется снова и сохраняется до закрытия и повторного открытия IE.Закрытие консоли разработчика после появления ошибки, похоже, не дает эффекта.
Тестовый HTML размещен на netlify , HTML-код:
<!DOCTYPE HTML>
<html>
<head>
<style>
table, th, td {border: 1px solid black;border-collapse: collapse;}
th, td {padding: 15px;}
</style>
</head>
<body>
<div id="extTabsBodyEleFile1273551781_renderTo"></div>
<div><p id="testresult"></p></div>
<script>
var testresults = document.getElementById('testresult');
var time = new Date().getTime();
testresults.innerHTML = "<h3>testresults:</h3><br><table><tr><th>ID</th><th>Result</th><th>Time</th></tr>" +
'<tr><td>extTabsBodyEleFile1273551781_renderTo: ' + "</td><td>" + document.getElementById('extTabsBodyEleFile1273551781_renderTo') + "</td><td>" + time + "</td></tr>" +
'<tr><td>extTabsBodyEleFile1273551781_renderTo through querySelector: ' + "</td><td>" + document.querySelector('*[id="extTabsBodyEleFile1273551781_renderTo"]') + "</td><td>" + time + "</td></tr>" +
'</table>';
</script>
</body>
</html>