У меня возникла странная проблема с динамической заменой элементов управления с помощью javascript в Google Chrome. Заменяемые элементы управления не отображаются в пользовательском интерфейсе, но когда я использую инструменты для разработчиков, я могу найти замененный элемент, но он не отображается, пока я не закрою инструменты разработчика. после того, как я открою и закрою инструменты разработчика, проблема больше не реплицируется, пока я не обновляю страницу.jquery replaceWith не работает на google chrome
Это происходит только в тех случаях, когда я пытаюсь заменить внешнийHTML элемента.
Я первый попытался с помощью jquery's replaceWith
апи, что впадина помощь, поэтому я перешел на следующий сценарий -
function chromeOuterHTML(oldElem, outerhtml)
{
var el = document.createElement('div');
el.innerHTML = outerhtml;
var parentNode = oldElem.parentNode;
var range = document.createRange();
range.selectNodeContents(el);
var documentFragment = range.extractContents();
parentNode.insertBefore(documentFragment, oldElem);
parentNode.removeChild(oldElem);
}
Я не думаю, что его проблема с моим JavaScript, так как проблема специфична для хрома, а также происходит в только в некоторых случаях.
Любая помощь будет принята с благодарностью
Вы обязательно получите решение быстрее, если сможете опубликовать ссылку на страницу примера! – Beejamin
Несколько других мыслей: Диапазоны - интересные звери - они могут охватывать несколько элементов между их начальными и конечными точками, поэтому они не обязательно выбирают узлы DOM. Это не должно быть проблемой в вашем случае, но вы никогда не знаете. – Beejamin
Я также видел странное поведение при работе с documentFragments, которые имеют более одного узла верхнего уровня. Я не помню специфику, но я обнаружил, что они вели себя намного лучше, когда фрагмент содержался в одном узле верхнего уровня. – Beejamin