У меня есть страница, размещенная в чужом наборе фреймов, однако все они находятся в одном домене (мой контент загружается на их сервер через службу). Однако, ПОЧЕМУ они используют набор фреймов, это аргумент для другого дня. Они не изменят свою разметку, поэтому мне нужно найти обходной путь, который будет работать в моем коде. Я обнаружил странную проблему в своем тестовом примере, которая может помочь мне, если я смогу ее решить. Это проблема только в IE, как обычно.
Фрейм-оболочка выглядит так (с атрибутами без кавычек, да):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
<TITLE>foo</TITLE>
<META content="text/html; charset=UTF-8" http-equiv=Content-Type>
<META content=IE=EmulateIE8 http-equiv=X-UA-Compatible>
</HEAD>
<FRAMESET frameSpacing=0 cols=8,*,8 frameBorder=1>
<FRAME id=blackleft src="black.htm" name=blackleft scrolling=no>
<FRAME id=content marginHeight=0 src="button.html" name=ScormContent marginWidth=0>
<FRAME id=blackright src="black.htm" name=blackright scrolling=no>
</FRAMESET>
</HTML>
моя тестовая страница (button.html) выглядит так:
<!DOCTYPE html>
<html><head>
<meta http-equiv=X-UA-Compatible content="IE=Edge">
<title>test</title>
</head>
<body>
<section>
<a href="javascript:alert('hello world');">
<button>pressing me works unless you are in a frameset</button>
</a>
</section>
<section>
<a href="#" onclick="alert('hello world');">
<button>Pressing me always works</button>
</a>
</section>
</body>
</html>
Мне интересно, почему первая кнопка не отвечает в IE9, когда она используется в наборе фреймов - автономный запуск страницы приводит к нажатию кнопки.
Я много читал об обоих типах документов и трюке, совместимом с x-ua, еще больше запутался, чем когда-либо, и я не могу понять, что я должен делать. Как уже упоминалось, я не могу каким-либо образом изменить разметку набора фреймов, поэтому для того, чтобы мой код работал (который зависит от таких вещей, как события beforeunload и unload для передачи данных для сохранения, когда страница перемещается - которые не работают при работе в наборе фреймов). Моя интуиция подсказывает мне, что пример с кнопкой показывает, что я близок к основной проблеме, а Интернет говорит мне, что это связано с x-ua-совместимым тегом и режимом причуд, но много чтения по этому вопросу не принесло мне пользы. решение еще... например если я захочу принудительно перевести IE9 в (скажем) режим совместимости с IE7, тогда вся моя работа по стилю страниц выйдет из окна.