Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.11.2011, 22:02
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

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>

Последний раз редактировалось lancer, 16.11.2011 в 22:06.
Ответить с цитированием
  #2 (permalink)  
Старый 16.11.2011, 22:23
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

user_frame.contentWindow.contentDocument
?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 16.11.2011, 22:41
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

user_frame.contentWindow.contentDocument

is null. IE7,8; с сервера, с локала.
Ответить с цитированием
  #4 (permalink)  
Старый 17.11.2011, 00:31
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Метод бубна помог и при вызове напрямую через 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>
Ответить с цитированием
  #5 (permalink)  
Старый 17.11.2011, 00:39
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Я готов поставить его выполнение только для IE, для других у меня уже работает аналогичный. Скажите почему вызов через id работает, а через переменную нет - хотя бы это.
Ответить с цитированием
  #6 (permalink)  
Старый 17.11.2011, 00:51
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Вот это да. Спасибо.
Ответить с цитированием
  #7 (permalink)  
Старый 18.11.2011, 17:36
UDN UDN вне форума
Аспирант
Отправить личное сообщение для UDN Посмотреть профиль Найти все сообщения от UDN
 
Регистрация: 18.06.2009
Сообщений: 55

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
Strict - строгое соблюдение синтаксиса.

Когда вас научат, объявлять переменные.
Не user_frame = document.getElementById("user_frame");,
а var user_frame = document.getElementById("user_frame");


Напишите правильно и будет работать.

Последний раз редактировалось UDN, 18.11.2011 в 17:39.
Ответить с цитированием
  #8 (permalink)  
Старый 19.11.2011, 18:52
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Я развесил на ссылки 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 или просто.
Вложения:
Тип файла: zip iframer.zip (34.0 Кб, 4 просмотров)
Ответить с цитированием
  #9 (permalink)  
Старый 20.11.2011, 18:15
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Не хуже чем у других, кто только изучает. Не хотите - не смотрите.
Ответить с цитированием
  #10 (permalink)  
Старый 20.11.2011, 19:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от lancer
Хоть с сервера хоть не с сервера, IE 7,8 не видит дальше user_frame.contentWindow.
А что ты там пытаешся выудить с того iframe? Может вот это прольёт свет для тебя...
http://forum.codenet.ru/archive/index.php/t-50694.html
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Растянуть элемент по содержимому AnToxa Элементы интерфейса 11 09.04.2012 22:13
Переопределить функции .childElements rikitikitavi Events/DOM/Window 2 18.03.2011 21:44
Чем занимаются JS-программеры. JSTalker Оффтопик 69 02.02.2011 10:18
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20