JQuery заменить с не работает на Google Chrome

Я столкнулся со странной проблемой с динамической заменой элементов управления с использованием JavaScript в Google Chrome. Замененные элементы управления не отображаются в пользовательском интерфейсе, но когда я использую инструменты разработчика, я могу найти замененный элемент, но он не отображается, пока я не закрою инструменты разработчика. как только я открываю и закрываю инструменты разработчика, проблема больше не реплицируется, пока я не обновлю страницу.

Это происходит только в тех случаях, когда я пытаюсь заменить externalHTML элемента.

Я впервые попробовал использовать jquery's replaceWith API, эта помощь DINT, поэтому я переключился на следующий скрипт -

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, так как проблема специфична для chrome и также происходит только в определенных случаях.

Любая помощь будет принята с благодарностью

1 ответ

Больше диагностический инструмент, чем решение, но вы пытались отложить вставку до?

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();
            setTimeout(function () {    
                parentNode.insertBefore(documentFragment, oldElem);
                parentNode.removeChild(oldElem);
    }, 1);
}

В некоторых ситуациях (которые я не до конца понимаю), манипуляции с DOM могут потерпеть неудачу, если они происходят слишком быстро. Эта модификация задержит (только на 1 мс) вставку - возможно, это будет иметь значение. Также возможно, что это ничего не сделает!

Другие вопросы по тегам