Документ Iframe показывает базовый HTML ... getElementById null - PullRequest
0 голосов
/ 07 октября 2019

Я потратил около 5 дней, пытаясь решить эту проблему, и много искал, однако не смог найти решения для этой проблемы.

Вот код:

JavaScript(входит в простую страницу HTML, например: index.html):

function createIframe() {
var ifrm = document.createElement("iframe");
ifrm.setAttribute("src", "page.html");
ifrm.style.width = "300px";
ifrm.style.height = "300px";
ifrm.style.border="0px";
ifrm.id="iframeID";
document.body.appendChild(ifrm);
}
createIframe();

Страница, которая загружается внутри iframe (page.html):

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Hello World</h1>
<input type="text" id="textID" value="Test">
</body>
</html>

JavaScript для доступа к iframe с родительской страницы (index.html):

В консоли Chrome я получаю документ page.html как:

<html>
<head>
</head>
<body>
</body>
</html>

Без других элементов, поэтому, когда я пытаюсь получить текстовое поле или его значение (используя: doc.getElementById("textID")), я получаю ноль.

Я не уверен, где проблема: это в коде? или это в настройках Chrome? или где-то еще?

Все документы находятся в одном домене.

Примечание. Я хотел бы использовать чистый JavaScript.

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 07 октября 2019

причина, по которой вы не создаете Iframe из этого кода, заключается в том, что вы не вызываете функцию.

вам потребуется вызвать функцию createIframe () для создания Iframe, это можно сделать с помощью кнопки. с помощью onclick или с настройкой

  setTimeout(() => {

    }, timeout);

, или даже с выводом кода за пределы объявления функции, если вы собираетесь использовать его только 1 раз, как этот

var ifrm = document.createElement("iframe");
ifrm.setAttribute("src", "page.html");
ifrm.style.width = "300px";
ifrm.style.height = "300px";
ifrm.style.border="0px";
ifrm.id="iframeID";
document.body.appendChild(ifrm);

лучше, если вы вызоветеэта функция с помощью кнопки или setTimeout.

надеюсь, что это поможет

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