Доступ к родительскому 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";
}
Другие вопросы по тегам