Доступ к родительскому DOM из скрипта в iframe в IE Mobile
У меня есть окно в рамке (в настоящее время iframe, но, возможно, в рамке) - я не могу контролировать это.
Я хотел бы определить, находится ли мой контент внутри iframe (или фрейма).
Я хотел сравнить местоположение текущего документа с тем, который содержит верхний объект, но кажется, что это тот же объект (окно top ===).
После интенсивного поиска в Google я попал в эту запись в блоге IEMobile, и в одном из комментариев есть ответ:
iemoblog сказал:
Нет, вы не можете получить доступ к какой-либо части родительского DOM из скрипта в iframe в IE Mobile.
20 декабря 2007 г. 12:12
Похоже, я не могу найти какую-либо документацию по этому поводу - может кто-нибудь помочь подтвердить это или даже лучше - предложить способ определить, является ли страница "рамкой"?
2 ответа
Поскольку я не получил ничего после нахождения комментария, оставленного в блоге IE Mobile (Чарльз Моррис - руководитель программы в команде IE Mobile, на его собственном посту), я вынужден добавить этот ответ и заявить, что он:
Как задумано (или, по крайней мере, ошибка)
КНР сказал:
Что касается поддержки iframe: я могу создать iframe, но не могу "смотреть за пределы" фрейма. "top" и "parent", похоже, относятся только к самому iframe, а не к самому верхнему предку или непосредственному предку, поскольку документация предполагает, что это следует делать. Есть ли способ ссылаться на переменные javascript во вложенном документе изнутри iframe?
19 декабря 2007 г., 21:29
iemoblog сказал:
Нет, вы не можете получить доступ к какой-либо части родительского DOM из скрипта в iframe в IE Mobile.
20 декабря 2007 г. 12:12
Основная проблема заключается в том, что если фрейм находится в другом домене, чем контейнер, то ваш JavaScript-код помещается в песочницу и не может получить доступ к другому фрейму / контейнеру.
Что вы можете сделать, это попробовать сравнить window
в window.top
и возможные результаты:
1. То же самое -> вы верхнее окно на странице 2. Они не одинаковы -> Вы не верхнее окно на странице, есть какая-то страница контейнера, в том же домен как вы, который содержит ваше окно как фрейм или фрейм.
3. Выдается исключение безопасности -> вы не верхнее окно на странице, но верхнее окно принадлежит другому домену, и вы не можете получить к нему доступ.
может быть что-то вроде этого:
try {
if (window == window.top)
return "I'm parent";
else
return "I'm a child of " + window.top.location;
} catch (e) {
return "I'm a child of something from another domain";
}