Доступ к родительскому DOM из скрипта в iframe в IE Mobile - PullRequest
1 голос
/ 08 марта 2009

У меня есть окно в рамке (в настоящее время iframe, но, возможно, в рамке) - я не могу это контролировать.

Я хотел бы определить, находится ли мой контент внутри iframe (или фрейма).

Я хотел сравнить местоположение текущего документа с тем, которое содержит верхний объект, но кажется, что это тот же объект (окно top ===).
После продолжительного поиска в Google я попал в эту запись в блоге IEMobile и в одном из комментариев есть ответ:

iemoblog сказал:

Нет, вы не можете получить доступ к какой-либо части родительский DOM из скрипта в iframe в IE Mobile.
20 декабря 2007 г. 12:12

Кажется, я не могу найти какую-либо документацию по этому поводу - кто-нибудь может помочь подтвердить это или даже лучше - предложить способ определить, является ли страница "оформленной"?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2009

Так как я никуда не попал после нахождения комментария, оставленного в блоге IE Mobile (Чарльз Моррис - менеджер программы в команде IE Mobile, на его собственном посту) я вынужден добавить этот ответ и заявить, что это:

Как задумано (или, по крайней мере, ошибка)

PRC сказал :

относительно поддержки iframe: могу создать фрейм, но не могу «смотреть за пределы» кадра. "верх" и «родитель» оба, кажется, относятся только к сам iframe и не самый верхний предок или непосредственный предок как документация предполагает, что это должно. Есть ли способ сослаться на JavaScript переменные в прилагаемом документе изнутри фрейма?

19 декабря 2007 г., 21:29

iemoblog сказал :

Нет, вы не можете получить доступ к какой-либо части родительский DOM из скрипта в iframe в IE Mobile.

20 декабря 2007 г. 12:12 PM

2 голосов
/ 08 марта 2009

Основная проблема состоит в том, что если фрейм находится в другом домене, чем контейнер, то ваш 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";
}
...