|
13.07.2013, 19:51
|
Кандидат Javascript-наук
|
|
Регистрация: 01.08.2009
Сообщений: 102
|
|
Доступ к контенту внутри 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. Что не так у меня сделано?
Последний раз редактировалось hrundel, 19.07.2013 в 18:39.
|
|
13.07.2013, 21:03
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от 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
|
|
|
13.07.2013, 21:11
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<!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>
Без загрузки фрейма - нет доступа к окну
|
|
14.07.2013, 04:13
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
Можно просто
body.bgColor = 'green'
|
|
14.07.2013, 09:06
|
Кандидат Javascript-наук
|
|
Регистрация: 01.08.2009
Сообщений: 102
|
|
Сообщение от danik.js
|
А тебе вот это вообще ни о чем не говорит, не?
|
Не говорит. Откуда вы взяли это сообщение?
Мне Firebug в Chrome и FF не сообщает ничего подобного. Хотя FF сообщает нечто странное (в консоли сообщает): синтаксическая ошибка на строке 1 в файле html.html.
Какими средствами отладки вы пользуетесь?
|
|
14.07.2013, 09:17
|
Кандидат Javascript-наук
|
|
Регистрация: 01.08.2009
Сообщений: 102
|
|
Сообщение от danik.js
|
А тебе вот это вообще ни о чем не говорит, не?
|
Сообщение от Deff
|
<!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-код выполняется раньше, чем во фрейм загружается новый документ?
|
|
14.07.2013, 09:21
|
Кандидат Javascript-наук
|
|
Регистрация: 01.08.2009
Сообщений: 102
|
|
Уже исправил, у меня там localhost был. Теперь ссылка нормальная, но все равно цвет фон меняется всеволишь на пол секунды, почему-то, а потом снова становится белым.
Есть ли способ без всяких jquery отсрочить выполнение сценария до того, как все фреймы будут загружены?
|
|
14.07.2013, 10:38
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от hrundel
|
Есть ли способ без всяких jquery отсрочить выполнение сценария до того, как все фреймы будут загружены?
|
Тебе же Deff показал как такое сделать.
Ruslan_xDD, не учи плохому. Если что-то как-то работает, то это не значит что так и нужно делать.
|
|
14.07.2013, 15:10
|
Кандидат Javascript-наук
|
|
Регистрация: 01.08.2009
Сообщений: 102
|
|
<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, что ничего не работает.
Последний раз редактировалось hrundel, 19.07.2013 в 18:38.
|
|
14.07.2013, 15:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,125
|
|
hrundel,
попробуйте contentDocument вместо contentWindow
|
|
|
|