Отслеживание истории IE, IFRAMES и междоменная ошибка - PullRequest
0 голосов
/ 02 июня 2010

Так вот в чем дело. У нас есть приложение Flash, которое выполняется в файле HTML. Для одной страницы мы называем устаревшую систему отчетов в ASP.NET, которая находится внутри IFRAME. Затем эта страница возвращается обратно в приложение Flash с использованием междоменных сценариев (document.domain = "domain" устанавливается на обеих страницах.

ЭТО ВСЕ РАБОТАЕТ.

Теперь кикер. Flash имеет отслеживание истории включено. При этом загружается файл history.js, который создал тег div для сохранения изменений страницы, чтобы в браузере работали кнопки «назад» и «вперед».

Что работает для Firefox и Chrome, поскольку они создают тег div.

ОДНАКО

В Internet Explorer history.js создает другое IFRAME (вместо DIV) с именем ie_historyFrame. Когда код ScriptResource.axd пытается получить к нему доступ с помощью:

var frameDoc = this._historyFrame.contentWindow.document;

мы получаем сообщение об ошибке «Доступ запрещен». ARGH!

  • Мы попытались получить дескриптор этого IFRAME и вставить код document.domain. ПОТЕРПЕТЬ ПОРАЖЕНИЕ.
  • Мы попытались отредактировать файл historytemplate.html, который flex также использует для включения document.domain ... FAIL.
  • Я пытался редактировать базовый ASP.NET страница для отключения истории отслеживание в ScriptManager контроль. СБОЙ.

В конце моего остроумия на этом. У нас есть пользователи, которым нужно использовать IE для доступа к этому сайту. Это крупные клиенты, которых мы не можем сказать, просто использовать Firefox.

Любые предложения будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 13 июня 2010

Не уверен, но отправка этого заголовка с сервера может работать:

// in PHP...
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"',true);

Я использовал его для установки файлов cookie из кода JS в iframe.

0 голосов
/ 10 июня 2010

Я понимаю, что это последний сценарий, но вы должны рассмотреть вопрос о том, что IE может оказаться невозможным для поддержки. Вам понадобятся объективные доказательства, некоторые примеры, которые ясно показывают проблему, и хорошо отработанный рассказ о преимуществах соблюдения стандартов, а не кодирование специально для (возможно, устаревшей) версии IE.

Это никогда не гарантируется, но если вы можете убедить их в том, что существуют объективные выгоды, которые позволят снизить как краткосрочные, так и долгосрочные затраты, то стоит попробовать - просто помните, что для многих клиентов важен бизнес-кейс, а не техничный кейс.

...