Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доступ к контенту внутри iframe из родительского документа (https://javascript.ru/forum/misc/39829-dostup-k-kontentu-vnutri-iframe-iz-roditelskogo-dokumenta.html)

hrundel 13.07.2013 19:51

Доступ к контенту внутри iframe из родительского документа
 
Есть страница со встроенным тегом <iframe>. И страница и подгружаемый контент находятся на одном домене. Использую способ взятый отсюда: http://learn.javascript.ru/iframes

<iframe src="javascript:'тест'" style="height:60px"></iframe>
<script>
  var iframe = document.getElementsByTagName('iframe')[0];
  var iframeDoc = iframe.contentWindow.document;
  iframeDoc.body.style.backgroundColor = 'green';
</script>


Но не получается изменить фон бэкграунда внутри ифрейма. Вот ссылка на наглядный пример: http://www.*****.ru/frame/html.html. Что не так у меня сделано?

danik.js 13.07.2013 21:03

Цитата:

Сообщение от hrundel
Что не так у меня сделано?

А тебе вот это вообще ни о чем не говорит, не?
Цитата:

Object not found!

The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.

If you think this is a server error, please contact the webmaster.

Error 404

localhost
07/14/13 03:02:18
Apache

Deff 13.07.2013 21:11

<!DOCTYPE>
<html>
<body>
<div class="with-frame">
	<iframe src="/frame/inside.html" id="myiframe"></iframe>
</div>

<script type="text/javascript">
  var iframe = document.getElementsByTagName('iframe')[0];
  var iframeDoc = iframe.contentWindow.document;
  iframe.onload = function(){iframeDoc.body.style.backgroundColor = 'green'};
</script>


</body>
</html>

Без загрузки фрейма - нет доступа к окну

ruslan_mart 14.07.2013 04:13

Можно просто
body.bgColor = 'green'

hrundel 14.07.2013 09:06

Цитата:

Сообщение от danik.js (Сообщение 262133)
А тебе вот это вообще ни о чем не говорит, не?

Не говорит. Откуда вы взяли это сообщение?

Мне Firebug в Chrome и FF не сообщает ничего подобного. Хотя FF сообщает нечто странное (в консоли сообщает): синтаксическая ошибка на строке 1 в файле html.html.

Какими средствами отладки вы пользуетесь?

hrundel 14.07.2013 09:17

Цитата:

Сообщение от danik.js (Сообщение 262133)
А тебе вот это вообще ни о чем не говорит, не?

Цитата:

Сообщение от Deff (Сообщение 262134)
<!DOCTYPE>
<html>
<body>
<div class="with-frame">
	<iframe src="/frame/inside.html" id="myiframe"></iframe>
</div>

<script type="text/javascript">
  var iframe = document.getElementsByTagName('iframe')[0];
  var iframeDoc = iframe.contentWindow.document;
  iframe.onload = function(){iframeDoc.body.style.backgroundColor = 'green'};
</script>


</body>
</html>

Без загрузки фрейма - нет доступа к окну

Вы хотите сказать, что js-код выполняется раньше, чем во фрейм загружается новый документ?

hrundel 14.07.2013 09:21

Уже исправил, у меня там localhost был. Теперь ссылка нормальная, но все равно цвет фон меняется всеволишь на пол секунды, почему-то, а потом снова становится белым.
Есть ли способ без всяких jquery отсрочить выполнение сценария до того, как все фреймы будут загружены?

danik.js 14.07.2013 10:38

Цитата:

Сообщение от hrundel
Есть ли способ без всяких jquery отсрочить выполнение сценария до того, как все фреймы будут загружены?

Тебе же Deff показал как такое сделать.
Ruslan_xDD, не учи плохому. Если что-то как-то работает, то это не значит что так и нужно делать.

hrundel 14.07.2013 15:10

<script type="text/javascript">
	var iframe = document.getElementsByTagName('iframe')[0];
	var iframeDoc = iframe.contentWindow.document;
	iframe.onload = function(){iframeDoc.body.style.backgroundColor = 'green'};

	</script>

Вот мой код, который вставлен после закрывающего тега <html>. Можете посмотреть на том же самом наглядном примере http://www.*****.ru/frame/html.html, что ничего не работает.

рони 14.07.2013 15:19

hrundel,
попробуйте contentDocument вместо contentWindow


Часовой пояс GMT +3, время: 12:03.