insertBefore выдает ошибку в Internet Explorer 11 при попытке изменить DOM всплывающего окна - PullRequest
0 голосов
/ 12 мая 2018

Проблема возникает в Internet Explorer - когда я пытаюсь изменить содержимое объекта dom, который находится во всплывающем окне, используя insertBefore из родительского контейнера, он выдает ошибку недопустимого аргумента.Ниже мой popupcontainer и всплывающее окно HTML.

popucontainer.html -

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        function changeDomContent(obj) {
            var heading = document.createElement('h2');
            heading.textContent = "Content from parent container";
            obj.insertBefore(heading, obj.firstChild)
        }
        function openPopup() {
            window.open("popup.html", "_blank", "location=no,scrollbars=yes,resizable=yes,height=500px,width=800px");

        }
    </script>
</head>

<body>
    <h1>Parent Container, who will change the dom content of the popup</h1>
    <button onclick="openPopup()">Open Popup</button>
</body>

</html>

popup.html -

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script>
        function fnInit() {
            var winObj = window.opener;
            winObj.changeDomContent(document.getElementById('appContainer'));
        }

    </script>
</head>

<body>
    <h1>Testing InsertBefore</h1>
    <div id="appContainer">
        <div></div>
    </div>
    <button onclick="fnInit()">
        Test InsertBefore
    </button>
</body>

</html>

Обратите внимание, что я действительно использовал externalHTML / innerHTML, который работает в IE, но этопроисходит из KnockOut JS, и в основном некоторые из событий не запускаются, если мы просто изменим с помощью externalHTML / innerHTML, он ожидает, что будет вставлен правильный узел.Приведенный выше код будет хорошо работать в Chrome.Любые предложения помогут.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...