Получить DocType HTML в виде строки с Javascript

Если проблема вызвана ударом ограничения памяти, вы можете попробовать установить более высокое значение (это может работать или не зависит от конфигурации php).

это устанавливает ограничение на память до 12 Мб

ini\_set("memory_limit","12M");
29
задан matte 22 May 2011 в 15:46
поделиться

5 ответов

Во всех совместимых браузерах (включая Chrome / Safari), document.doctype также возвращает объект DocumentType . Следующий код можно использовать для генерации правильной строки DOCTYPE.

var node = document.doctype;
var html = "<!DOCTYPE "
         + node.name
         + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '')
         + (!node.publicId && node.systemId ? ' SYSTEM' : '') 
         + (node.systemId ? ' "' + node.systemId + '"' : '')
         + '>';

Этот метод возвращает правильную строку для допустимых (HTML5) типов документов , например:

  • <!DOCTYPE html>
  • <!DOCTYPE html SYSTEM "about:legacy-compat">
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

Объяснение кода:

node.name      # Holds the name of the root element, eg: HTML / html
node.publicId  # If this property is present, then it's a public document type.
               #>Prefix PUBLIC
!node.publicId && node.systemId
               # If there's no publicId, but a systemId, prefix SYSTEM
node.systemId  # Append this if present
70
ответ дан Christoph 22 May 2011 в 15:46
поделиться

Вы также можете использовать этот вкладыш, чтобы получить текущий тип документа. Это будет работать в в любом современном браузере и IE 9 и выше .

new XMLSerializer().serializeToString(document.doctype);
44
ответ дан Pavlo 22 May 2011 в 15:46
поделиться
function get_doctype()
{
    var doctype = 
    '<!DOCTYPE ' + 
    document.doctype.name +
    (document.doctype.publicId?' PUBLIC "' +  document.doctype.publicId + '"':'') +
    (document.doctype.systemId?' "' + document.doctype.systemId + '"':'') + '>';
    return doctype;
}
3
ответ дан codeassembly 22 May 2011 в 15:46
поделиться

Это то, что вы ищете?

alert(document.doctype.publicId);
1
ответ дан T1000 22 May 2011 в 15:46
поделиться

Объединить DocumentType.name, .publicId и .systemId. Что-то вроде:

'<!DOCTYPE '+ 
  DocumentType.name+' PUBLIC "'+ //maybe you should check for publicId first
  DocumentType.publicId+'" "'+
  DocumentType.systemId+'">'
2
ответ дан KooiInc 22 May 2011 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: