2010-09-07 1 views
0

Мне пришлось перепрофилировать какой-то старый код для спешки, и в то время как этот код QA в порядке, оказывается, что не объявлен doctype. Когда я добавляю doctype, он разбивает дизайн в IE. В идеале, я мог бы объявить, какой тип doctype предполагается, когда он не существует, но не знаю, возможно ли это. Есть ли способ объявить doctype без изменения поведения, созданного страницей без объявления какого-либо типа doctype?Добавление доктрины без потери текущей функциональности

+0

Вы используете строгий или переходный метод? – Mark

ответ

1

Без DOCTYPE, IE покажет страницу в quirks mode. Чтобы поддерживать IE в режиме quirks с помощью doctype, вы можете добавить комментарий (<!-- -->) до doctype.

Редактировать: если это просто проблема с IE6, пролог XML (<?xml version="1.0" encoding="utf-8"?>) сохранит его в режиме quirks.

Редактировать 2: есть фактически lots of doctypes, который будет поддерживать IE в режиме причуд. Вы должны быть в состоянии найти тот, который вы можете подтвердить.

0

Это невозможно, потому что это изменит режим причуд в стандартном режиме (предполагая, что вы используете что-то вроде XHTML Transitional, HTML 4 Strict или HTML 5), и есть много разных расхождений, особенно с IE. Вам придется исправить ситуацию или нанять кого-то другого.

+1

IE все еще может решить вернуться в режим причуд, если он видит, что документ недействителен с объявленным doctype. – 2010-09-07 17:48:15

+0

Я предполагаю законный doctype, такой как HTML 4 strict или HTML 5, но да, что может иметь отношение. –

0

Я был в аналогичной ситуации раньше. Моя рекомендация заключалась бы в том, чтобы запустить HTML-код через инструмент проверки HTML, пока вы это делаете. Моя любимая это одна:

http://validator.w3.org/

Существует также плагин Firefox, если требуется аутентификация или иметь какой-то другой механизм, чтобы получить доступ к странице (и не может быть, что доступ к сайту вашего сайта напрямую).

Если описываемая вами «функциональность» на самом деле является одной из многих недокументированных функций IE (ошибки), вы не сможете сделать ваши стандарты HTML совместимыми и продолжать работать. Вероятно, у вас есть ряд нестандартных компонентов кода, а обработка ошибок, специфичных для IE, - это то, что делает вашу функцию страницы вообще. Различные браузеры обрабатывают условия ошибок по-разному (поскольку по определению, условия ошибки выходят за рамки типа документа).

Чтобы повторить, попробуйте сделать свой HTML-код какой-то проверки, а затем подумайте о добавлении функциональности обратно. Мой опыт показал мне, что условия ошибки обычно приводят к таким проблемам, которые вы описываете.

Это правило №1, с которым я столкнулся с веб-разработкой. Страница должна проверяться для определенного типа doctype.

Удачи вам!

-Брайан J. Stinar-