Я управляю форумом, который обслуживает его страницы как XHTML + MathML + SVG; в полном объеме:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd">
Используя плагин MathPlayer, пользователи Internet Explorer могут использовать этот сайт. Тем не менее, иногда кто-то использует форум из IE и не может установить MathPlayer (может быть, они где-то на публичной машине). Затем IE (по крайней мере, 6 и 7) жалуется на XHTML и предлагает просто скачать файл.
На сайте w3c я читал, как обойти это, используя XSL-преобразование ( http://www.w3.org/MarkUp/2004/xhtml-faq#ie ). Когда я это применил, то обнаружил, что Chrome теперь громко жаловался на неопределенные сущности (конкретная была,
но тестирование показало, что это не имеет значения).
Как ни странно, я могу обойти это, вручную объявив сущности в DOCTYPE:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" [
<!ENTITY nbsp " ">
]>
но я бы предпочел не делать этого для всей гаммы возможных сущностей. Я говорю «причудливо», потому что XHTML + MathML + SVG dtd, насколько я вижу, объявляет эти объекты. Так что как-то это упускается.
Есть ли способ обойти эту проблему? Могу ли я обслуживать XHTML-с-сущностями в IE?
В случае, если это имеет значение, страницы генерируются скриптом php и обслуживаются через apache, поэтому, если есть надежный способ прослушивания браузера и изменения начала документа (то есть только отправки <?xml-stylesheet ...>
бита в IE), тогда это будет приемлемая альтернатива.
(Я надеюсь, что у меня есть правильный сайт SE ... пожалуйста, дайте мне знать, если я не в том месте. То же самое с тегами.)
источник
Ответы:
Этот оператор PHP будет соответствовать любым браузерам, которые включают «MSIE» в строку пользовательского агента, и вы можете уточнить критерии, добавив номер версии, если это необходимо:
... с номерами версий:
источник