Javascript.RU

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

Взаимодействие фреймов. IE7
Добрый день!

Столкнулся тут с одной проблемой. Никак не могу понять, в чём дело. Буду признателен за помощь или любой дельный совет.

Есть некий документ (страница), в которой есть два iframe. Один iframe грузит кнопку (она меняется в зависимости от куки), а другой - некий документ, который следует показываать при нажатии на кнопку в первом iframe. В каждом из трёх документов свойство document.domain выставлено следующим образом:

document.domain = document.location.host;

Т.е. значение этого свойства ВСЕГДА совпадает с хостом, набранным в адресной строке.

Как всё это работает.

Человек нажимает на кнопку, чтобы открыть желаемое окошко. В фрейме с кнопкой срабатывает JS-код, который обращается к свойству parent.window и вызывает метод родительского окна для отображения скрытого второго фрейма.

В принципе ничего сложного. И всё вроде бы работает во всех обозревателях...

Но есть такой замечательный броузер как Internet Explorer 7.0, где возникает одна проблема, которую я никак не получается преодолеть. Пробема заключается вот в чём.

Открыл поьзователь страницу в этом IE7, походил по ссылкам, потом нажал несколько раз кнопку Back, вернулся на какую-то страницу и тут-то он решил нажать на нашу кнопку.. Нажимает и.. "Тишина" (просто все в try and catch).
На деле происходит следующее: при нажатии на кнопку iframe пытается обратиться к свойству parent.window, чтобы отобразить второй фрейм, и в этот момент IE7 кидает exception: "отказано в доступе" ("access denied"). Точно такой же эффект можно получить и без кнопки Back. Для этого можно много-много раз нажать на странице F5, после чего ткнуть в кнопку. После этого данная проблема лечится перезапуском броузера или очисткой собственного кеша броузера.

Во время возникновения ошибки document.domain во всех фреймах и родительском окне совпадает (проверял при помощи alert).
Думал, что проблема как-то связана с собственным кешем броузера (уж больно подозрительно было то, что требовалась очистка кеша, да и пару раз ловил, что при таких обновлениях или при использовании Back IE7 рисует давно канувший в лето HTML код).
Поэтому была предпринята попытка заставить его не кешировать страницу при помощи явного указания метатегов и соответсвующих HTTP заголовков ответа от сервера. Но данное действие не дало никаких положительных результатов.

Сейчас одна из догадок о причинах проблемы - это то, что броузер упорно (не смотря на все рекомендации метатегов и заголовков) берёт страницу из кеша, и работает с ней, но уже не в контексте домена, а в контексте localhost (т.е. реальный document.domain отличается от того. что сидит в JS переменной). Но это только догадка. По-крайней мере это объясняет ошибку "отказано в доступе".

В IE6, IE8, Firefox, Google Chrome, Safari, Opera подобных проблем нет. Один только убогий IE7 так терзает меня..

Вобщем может кто сталкивался с этим уже. Буду рад любой помощи. Заранее спаисбо за ответ.

P.S.
Пробывал в настрйоках безопасноти броузера разрешать передачу данных между разными доменами - тоже проблему не лечит, что и хорошо, т.к. решения явно неправильное.
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2011, 13:08
Новичок на форуме
Отправить личное сообщение для Svarog81 Посмотреть профиль Найти все сообщения от Svarog81
 
Регистрация: 02.03.2011
Сообщений: 2

Проблема похоже решается просто удалением строк с инициализацией document.domain - оставил заполенение этой переменной на совесть броузеров. Пока все тесты показывают, что проблема "ушла".
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
слетает верстка в IE6 и IE7 (js используется) rognarek Internet Explorer 3 08.09.2010 19:34
Взаимодействие со скриптом на протяжении его выполнения Malgin AJAX и COMET 6 23.08.2010 22:39
Взаимодействие фреймов sukubba Общие вопросы Javascript 3 07.05.2010 15:39
Тормозит подсветка td в IE7 Beck Events/DOM/Window 7 25.04.2010 21:45
Проблема IE7 dark Элементы интерфейса 4 07.10.2009 08:50