如何转储DOCTYPE元素?

时间:2012-10-21 18:54:06

标签: html doctype

我想知道是否有办法将doctype转储到字符串。

例如,我有一个很大程度上依赖于BackboneJS的Web应用程序。初始页面源代码很简单(只需要脚本)但加载后Backbone会生成整个内容。我正在寻找一种方法来获取特定状态的DOM源,以便将其发送到W3C验证器。我不想只是从Firebug的检查器中复制粘贴内容,因为我想自动化流程。

我已经发现我可以使用document.getElementsByTagName('html')[0].outerHTML转储HTML元素。这不是标准,但适用于许多浏览器(Chrome,Opera,也许其他浏览器)。这是可以的,因为我正在为开发人员创建一个工具,而不是页面最终用户用户的解决方案。

但是,这样的转储缺少有关doctype的信息。并且需要doctype来指示HTML验证器。请问你能帮帮我吗?提前感谢您对此主题的任何帮助。

2 个答案:

答案 0 :(得分:2)

document.doctype对象具有属性name(HTML文档为html),公共标识符为publicId,系统为systemId标识符。因此,您可以通过以下方式构造文本doctype声明:

var doctype = '<' + '!DOCTYPE ' + document.doctype.name;
if(document.doctype.publicId) doctype += 
  ' PUBLIC "' + document.doctype.publicId + '"';
if(document.doctype.systemId) doctype += 
 ' "' + document.doctype.systemId + '"';
doctype += '>\n';

答案 1 :(得分:1)

document.doctype

希望有所帮助。