Фреймы и document
При обращении к свойству document у фрейма иногда выполнение скрипта прекращается.
У некоторых фреймов похоже нету свойства document. Как определить его наличие? Пробовал так: alert( window.frames[i] ); //здесь показывает наличие объекта alert( window.frames[i].document ); //здесь или показывает наличие document, или вообще не вывоодится и так: alert( typeof window.frames[i].document ); Причем в случае сбоя - сам фрейм существует, а вот при любом обращении к его .document выполнение скрипта прерывается (alert не выводится). Мне надо хотя-бы игнорировать такие фреймы. Как определить, что у этого фрейма document лучше не трогать? |
сравнивать URL с текущим или проверять, если до document, в обёртке
try { getDoc(); } catch(e){/*ошибка при получении свойства*/} |
о, спасибо.
а вообще в чем может быть проблема - как-то странно, что скрипт сразу вылетает?... |
Цитата:
|
в своё время мне было достаточно следующей функции, чтобы получить документ iFrame.
function getIFrameDoc(obj){ return obj.contentWindow.document || obj.contentDocument || obj.document || null; } Попробуй, может для фрейма то же прокатит. |
devote,
все фреймы уже были давно загружены Pattern, ух ты, сразу три способа - спасибо, попробую) |
Цитата:
2. Что Вы хотите поиметь от этого свойства? Если фрейм в чужом домене (ссылка на него ведет на чужой сайт), то политика безопасности браузера не позволит до него достучаться - в результате в этой точке скрипта произойдет ошибка и дальше скрипт выполняться не будет. |
Маэстро
Вот, похоже в этом проблема. И что - даже прочитать нельзя? |
ничего нельзя. это не ваше. к чужому руки не тянуть! на чужое не заглядываться!
|
Цитата:
Вообще кое-что сделать можно (в некоторых частных случаях). Например, есть такая методика, которая называется проксирование сервера. т.е. Вы сначала закачиваете контент чужого сайта к себе на сервер, а потом отдаёте его клиенту в браузер уже от имени своего домена... |
Часовой пояс GMT +3, время: 05:30. |