Я не думал, что это возможно, но я ненавижу IE6 вдвое больше, чем сегодня утром.
Пожалуйста, не беспокойте меня о причинах, но я постараюсь объяснить, чего мы пытаемся достичь.
У нас работает 2 приложения, скажем, APP1 и APP2, оба они находятся в одном домене . APP1 включает в себя файл JavaScript, который размещен на APP2. Этот файл JS будет:
- Создать IFrame (используя document.createElement)
- Установить источник IFrame в корень APP2 (где генерируется некоторый HTML);
- Добавить div к телу APP1
- Прочитать содержимое IFrame (поэтому сгенерированный HTML-код APP2)
- установить это содержимое как innerHTML для div (3)
Таким образом, в конце в APP1 у нас есть заголовок, в котором содержимое генерируется APP2 без IFrame на экране.
Проблема заключается в шаге 4; это работает нормально для всех браузеров, кроме IE6 (может ли это быть наиболее часто используемым предложением в веб-разработке?).
Я получаю JS-ошибку при попытке доступа к contentWindow.document из iframe: «Доступ запрещен». Я не эксперт, но, как я понимаю, эту ошибку вы получите, если оба приложения не будут находиться в одном домене, но они есть (dev.echnet / APP1 & dev.echnet / APP2).
Это код, который я использую для вышеперечисленных шагов (убрал то, что не выполняется, если не IE6):
(1), (2) и (3):
var elIf;
$().ready(function()
{
elIf = document.createElement('<iframe name="uhframename">');
elIf.setAttribute('id','idUhFrame');
document.body.appendChild(elIf);
var uhDiv = document.createElement('div');
document.body.appendChild(uhDiv);
elIf.src='dev.echnet/APP1?nocache='+Math.random();
getText();
}
(4) * 1 028 *
function getText() {
var sContent = "";
if (elIf.contentWindow.document.body) { // access denied on elIf.contentWindow.document
...
}
}
Я много гуглил и перепробовал много возможностей, которые нашел (также на SO), но ни одна из них, похоже, не решила эту проблему.
Я также попытался явно установить домен в IFrame, настроив его источник так:
"JavaScript: (функция () {document.open (); document.domain = \ 'dev.echnet \'; document.close ();}) ()"
но я не совсем уверен, имеет ли это какой-либо эффект, так как я устанавливаю источник на что-то еще, сделав несколько шагов дальше. В любом случае, поскольку это один и тот же домен, это не должно иметь значения?
Надеясь на помощь или кого-нибудь, чтобы сбить всех пользователей IE6 (в настоящее время выполнимая задача), поэтому я могу пропустить эту задачу: -).