Возможная ошибка Chrome 45: метод removeChild приводит к исчезновению других узлов в родительском элементе
У меня возникла проблема с Chrome версии 45.
Вопрос:
Когда я пытаюсь удалить последний дочерний div с JavaScript, движок Chrome скрывает все остальные теги в родительском div (теги span и b будут скрыты):
<div class='parentDiv' id='pdiv'>
Some text <span style='color:red;'>BBBBBBBBBBBBBBBBBBBBBBB</span> more example text more example <b style="color:green;">more</b> example text more example more example text more example more example text more example more example text example text example text example text example text example text example text example text example text example text
<div id='secondChild' style='color:blue;'>
This div should be removed.
</div>
</div>
<span class='Execute' onclick="removChild()"><b>Click me</b></span>
<script type='text/javascript'>
var removChild = function() {
document.getElementById('pdiv').removeChild(document.getElementById('secondChild'))
}
</script>
Похоже, что затронута только текущая версия Chrome (45). Бета-версии и dev-каналы не затрагиваются. Для тестирования я использовал чистую версию Chrome (без расширений). Кроме того, я не нашел эту проблему в списке отчетов о выпуске Chromium.
Примечание: Lools, как это происходит, только если родительский div-контент больше 250 символов.
Вопрос: Что-то не так с моей структурой html или это определенно проблема Chrome?
Скриншот демо
Примеры:
Пример ссылки 1: содержимое родительского div - 448 символов
Пример ссылки 2: содержимое родительского div - 197 символов
Ответы
Ответ 1
Моя версия chrome - 46.0.2490.71, и ваш код отлично работает для меня. Это похоже на хром-ошибку. вы можете использовать lastElementChild
для удаления secondChild, но он должен быть последним дочерним элементом внутри родительского родителя, который вы удаляете.
вы можете заменить свой script на этот:
var removChild = function() {
var lastChild = document.getElementById('pdiv');
lastChild.removeChild(lastChild.lastElementChild);
}
Вот ссылка, чтобы протестировать этот код для вашей версии Chrome: http://mashpoe.comeze.com/test.html