@eth481516

Как получить доступ к элементу в javascript?

Помогите пожалуйста решить проблему. В javascript я вообще не силён, но столкнулся с задачей, которую нужно решить именно на нём.
Суть:
Есть основной html документ, назовём его index.html
В этом основном html документе есть javascript код который вставляет другой javascript код. Выглядит всё это как-то так:
<html>
<body>
<script type="text/javascript">var newscript=document.createElement("script");
newscript.type="text/javascript";
newscript.src="http://example.com/example.js";
var s = document.getElementsByTagName('script')[0];
 s.parentNode.insertBefore(newscript, s); })
</script>
<script type="text/javascript"> тут нужно вставить код, который будет получать доступ к нужному элементу</script>
</body>
</html>

В скрипте который подгружается (example.js) создаётся некий html документ в котором присутствует класс с именем testclass
Как мне из основного документа(index.html) получить доступ к элементу с классом testclass?
Пробовал реализовывать на java с помощью selenium driver через
element = driver.findElement(By.className("testclass"));

и всё работает хорошо, доступ к элементу есть и с этим элементом можно дальше работать, но как это реализовать на js?
пробовал через document.getElementsByClassName("testclass")[0] и тому подобные методы - не работает
то, что выдаёт example.js:
<iframe src="http://somesite.com">
<html>
<head></head>
<body>
<div class="testclass"></div>
</body>
</html>
</iframe>
  • Вопрос задан
  • 703 просмотра
Пригласить эксперта
Ответы на вопрос 1
@tplus
У iframe-содержимого свой, отдельный, document. Чтобы добраться до него, нужно получить iframe и обратиться к его contentDocument.

Приведу очень упрощённый код:

var iframe = document.getElementsByTagName('iframe')[0];
var insideDoc = iframe.contentDocument;
var insideDocTestElem = insideDoc.getElementById('test');


В insideDoc хранится document, но не вашей страницы, а содержимого фрейма. Сразу важно отметить, что браузер предотвращает доступ к iframe-содержимому в определённых случаях, поэтому важен протокол подключения, домен и прочее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы