IE8 user_frame.contentWindow.document - is null
Хоть с сервера хоть не с сервера, IE 7,8 не видит дальше user_frame.contentWindow.
user_frame.contentWindow.document - is null. Пробывал уже не на onload обращаться, а по нажатии на див - не помогает. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> window.onload = function(){ user_frame = document.getElementById("user_frame"); alert(user_frame.contentWindow.document); } </script> </head> <body> <iframe id="user_frame" width="100%" height="100%" src="user_frame.html"></iframe> </body> </html> Фрейм: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Документ без названия</title> </head> <body> <ul id="headerMenu"> <li><a href='#m2' title=''>О компании</a></li> <li><a href='#m3' title=''>Заказ</a></li> <li id="lastLiOfHeaderMenu"><a href='#m4' title=''>Еще что-то</a></li> </ul> </body> </html> |
user_frame.contentWindow.contentDocument? |
user_frame.contentWindow.contentDocument is null. IE7,8; с сервера, с локала. |
Метод бубна помог и при вызове напрямую через id все работает. Но в чем разница между вызовом через id и переменную? Вот код, первый алерт через переменную, второй через id.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> window.onload = function(){ //через переменную user_frame = document.getElementById("user_frame"); alert(user_frame.contentWindow); // не понимает //через id alert(document.getElementById('user_frame').contentWindow.document.links.length); // понимает и даже показывает ссылки } </script> </head> <body> <iframe id="user_frame" width="100%" height="100%" src="user_frame.html"></iframe> </body> </html> |
Я готов поставить его выполнение только для IE, для других у меня уже работает аналогичный. Скажите почему вызов через id работает, а через переменную нет - хотя бы это.
|
Вот это да. Спасибо.
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
Strict - строгое соблюдение синтаксиса. Когда вас научат, объявлять переменные. Не user_frame = document.getElementById("user_frame");, а var user_frame = document.getElementById("user_frame"); Напишите правильно и будет работать. |
Вложений: 1
Я развесил на ссылки iframe'а события.
Все работает везде, но в IE-s 7/8 какую бы ссылку я нажал всегда показыватся url только последней ссылки(#a10). Функции расстановки и обработки: //--------------------set_events------------------------------- function set_events(){ var user_frame_param = document.getElementById("user_frame"); if (/MSIE (7|8).+Win/.test(navigator.userAgent)) { for ( i=0; i < user_frame_param.contentWindow.document.links.length; i++ ){ var link_href = user_frame_param.contentWindow.document.links[i]; user_frame_param.contentWindow.document.links[i].attachEvent('onclick', function() { write_href(link_href); }) } } else { for ( i=0; i < user_frame_param.contentWindow.document.links.length; i++ ){ user_frame_param.contentWindow.document.links[i].addEventListener("click", function(){write_href(this)}, false); } } } //----------------------write_href--------------------------------- function write_href(last_href_param){ alert(last_href_param) } Также прикладываю целиком папочку iframer.zip. П.С., что если переменная не объявлена через var при стрикте, то ничего не будет работать - ни разу не замечал, по-моему в языке есть выбор объявлять через var или просто. |
Не хуже чем у других, кто только изучает. Не хотите - не смотрите.
|
Цитата:
http://forum.codenet.ru/archive/index.php/t-50694.html |
Часовой пояс GMT +3, время: 15:37. |