2014-02-03 3 views
4

У меня есть html-страница без объявления doctype, объявленного на сервер (скажем, A). Это выборка js-файлов с другого сервера (скажем, B). js создает необходимую страницу html для отображения. Теперь IE8 создает проблемы, так как не объявлен doctype (устанавливает себя в режим IE5 quirks)set doctype с помощью javascript

Теперь doctype - это первая строка, и это кажется невозможным для этого (с помощью js для установки doctype). Возможно ли установить метатег, чтобы установить режим страницы в стандартный режим? Или есть какой-либо другой я могу установить страницу на стандартную страницу без изменения страницы HTML от сервера А.

+2

http://stackoverflow.com/questions/tagged/x-ua-compatible - однако, если вы можете установить метатег, вы можете установить doctype. Оба должны быть прочитаны во время загрузки - также прочитайте это http://stackoverflow.com/questions/2518256/override-intranet-compatibility-mode-ie8 – mplungjan

+0

Возможный дубликат http://stackoverflow.com/questions/3509798/how- can-we-add-a-doctype-using-javascript –

ответ

3
var nodeDoctype = document.implementation.createDocumentType(
'html', 
'-//W3C//DTD XHTML 1.0 Transitional//EN', 
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdd' 
); 
if(document.doctype) { 
    document.replaceChild(nodeDoctype, document.doctype); 
} else { 
    document.insertBefore(nodeDoctype, document.childNodes[0]); 
} 

Обновления на основе вашего комментария:

Можно изменить тип документа с JS, чтобы включить совместимость просмотра (как сделано здесь: http://www.webmasterworld.com/forum91/4856.htm), но довольно неприятный взлом и не рекомендуется. В идеале вы можете сделать это на стороне сервера. Поэтому имеет DOCTYPE параметр и расслоение плотных затем сделать перезагрузки страницы:

window.location = window.location+"?doctype=newdoctype" 

Это приведет к перезагрузке страницы, которые не может удовлетворить вас, но это самый безопасный способ сделать это.

+2

будет пересматривать браузер тактику. страница html уже загружена. – bhb

+0

btw 'document.doctype is null' – bhb

+0

как это сделать в IE. 'createDocumentType' не разрешен в bhb

Смежные вопросы