Вы хотите использовать метод appendChild, а не innerHTML.Измените последнюю строку в JSFiddle с
iframediv.innerHTML = iframe;
на
iframediv.appendChild(iframe);
Изменить, чтобы фактически ответить на ваш вопрос:
Ваша переменная iframe
является ссылкой на элемент DOM.Это объектное представление является элементом <iframe>
, в то время как его текстовое представление просто [object HTMLIFrameElement].
Используя innerHTML
, вы пытаетесь вставить его текстовое представление в DOM.Это как метод работает.Вы можете встретить код JS, где элементы добавляются в DOM через innerHTML, но он всегда с текстом, например
element.innerHTML = '<div>some text</div>';
. В этом случае браузер правильно добавит узел <div>
в качестве дочернего элемента element
.
Чтобы элемент <iframe>
был вставлен в DOM с помощью переменной iframe
, необходимо использовать метод appendChild, который добавит объект IFrame в качестве дочернего узла к iframediv
.