Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2011, 16:40
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Фреймы и document
При обращении к свойству document у фрейма иногда выполнение скрипта прекращается.
У некоторых фреймов похоже нету свойства document. Как определить его наличие?
Пробовал так:

alert( window.frames[i] ); //здесь показывает наличие объекта
alert( window.frames[i].document ); //здесь или показывает наличие document, или вообще не вывоодится

и так:

alert( typeof window.frames[i].document );


Причем в случае сбоя - сам фрейм существует, а вот при любом обращении к его .document выполнение скрипта прерывается (alert не выводится).

Мне надо хотя-бы игнорировать такие фреймы. Как определить, что у этого фрейма document лучше не трогать?
Ответить с цитированием
  #2 (permalink)  
Старый 06.12.2011, 17:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

сравнивать URL с текущим или проверять, если до document, в обёртке

try { getDoc(); } catch(e){/*ошибка при получении свойства*/}
Ответить с цитированием
  #3 (permalink)  
Старый 06.12.2011, 22:21
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

о, спасибо.

а вообще в чем может быть проблема - как-то странно, что скрипт сразу вылетает?...
Ответить с цитированием
  #4 (permalink)  
Старый 06.12.2011, 22:41
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Почемучкин
а вообще в чем может быть проблема - как-то странно, что скрипт сразу вылетает?...
Нужно дождаться загрузки фрейма.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2011, 22:24
Аспирант
Отправить личное сообщение для Pattern Посмотреть профиль Найти все сообщения от Pattern
 
Регистрация: 13.05.2009
Сообщений: 37

в своё время мне было достаточно следующей функции, чтобы получить документ iFrame.
function getIFrameDoc(obj){
    return obj.contentWindow.document || obj.contentDocument || obj.document || null;
}

Попробуй, может для фрейма то же прокатит.
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2011, 22:56
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

devote,
все фреймы уже были давно загружены

Pattern,
ух ты, сразу три способа - спасибо, попробую)
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2011, 03:42
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Почемучкин Посмотреть сообщение
При обращении к свойству document у фрейма иногда выполнение скрипта прекращается.
У некоторых фреймов похоже нету свойства document. Как определить его наличие?
1. У всех фреймов есть свойство document. Иначе бы они не работали. Фрейм - это как бы браузер в браузере.
2. Что Вы хотите поиметь от этого свойства? Если фрейм в чужом домене (ссылка на него ведет на чужой сайт), то политика безопасности браузера не позволит до него достучаться - в результате в этой точке скрипта произойдет ошибка и дальше скрипт выполняться не будет.
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2011, 23:43
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Маэстро

Вот, похоже в этом проблема. И что - даже прочитать нельзя?
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2011, 23:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ничего нельзя. это не ваше. к чужому руки не тянуть! на чужое не заглядываться!
Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2011, 23:58
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Почемучкин Посмотреть сообщение
Маэстро
Вот, похоже в этом проблема. И что - даже прочитать нельзя?
Вы же не рассказываете подробно, что эти фреймы содержат, для чего Вы их хотите использовать, насколько сложны их внутренности...?
Вообще кое-что сделать можно (в некоторых частных случаях). Например, есть такая методика, которая называется проксирование сервера. т.е. Вы сначала закачиваете контент чужого сайта к себе на сервер, а потом отдаёте его клиенту в браузер уже от имени своего домена...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вложенные фреймы Леночка Элементы интерфейса 13 20.05.2012 11:05
document.documentElement и document meryfelow Events/DOM/Window 6 27.10.2010 15:24
Чат vochat и фреймы Abaza Работа 2 02.11.2009 14:40
javascript и фреймы joper Events/DOM/Window 3 01.06.2009 12:19
EventListner запуск без вызова в document MHY Events/DOM/Window 8 31.01.2009 09:46