Проблема возникает в 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.Любые предложения помогут.Спасибо!