with create con agregar javascript dom

javascript - create - innerhtml



Obtenga DocType de un HTML como cadena con Javascript (5)

¿Es eso lo que estás buscando?

alert(document.doctype.publicId);

Sé que puedo acceder al objeto doctype a través de document.doctype o document.childNodes[0] pero mi problema es obtener doctype como una cadena. Puedo hacer esto en Chrome y Safari llamando a document.doctype que devuelve <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> . Sin embargo, en Firefox, al llamar a document.doctype devuelve el objeto DocumentType.

¿Hay alguna manera de obtener la cadena del doctype en todos los navegadores como en Chrome y Safari?

¡Gracias!


Concatenar DocumentType.name , .publicId y .systemId . Algo como:

''<!DOCTYPE ''+ DocumentType.name+'' PUBLIC "''+ //maybe you should check for publicId first DocumentType.publicId+''" "''+ DocumentType.systemId+''">''


En todos los navegadores compatibles (incluido Chrome / Safari), document.doctype también devuelve un objeto DocumentType . El siguiente código se puede usar para generar una cadena DOCTYPE válida.

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

Este método devuelve la cadena correcta para doctypes válidos (HTML5) , por ejemplo:

  • <!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">

Explicación del código:

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



function get_doctype() { var doctype = ''<!DOCTYPE '' + document.doctype.name + (document.doctype.publicId?'' PUBLIC "'' + document.doctype.publicId + ''"'':'''') + (document.doctype.systemId?'' "'' + document.doctype.systemId + ''"'':'''') + ''>''; return doctype; }