Chrome 开发工具导出元素 HTML

Chrome Dev Tools export Elements HTML

为了调试我的 chromium-embedded 应用程序,我正在寻找一个函数来从 chrome 开发人员工具中获取网页的源代码。我基本上想要 'Elements' 选项卡中显示的 HTML 树,实际的 HTML DOM,作为 HTML 文本。这个功能存在吗?我该如何使用它?

当我使用 CEF 时,我只有 chrome 可用的开发工具,而不是完整的浏览器。我无法使用右键单击上下文菜单,因为我想查看当前操作的 DOM 而不是原始来源。

我想将此功能用于调试目的,以便我可以区分两个不同的 HTML 树。

Select 顶部节点并选择 "Copy"。不过,您必须 re-add Doctype。

或者,您可以单击 "edit as HTML" 并从那里复制它。

您可以尝试以下方法:

您只需右键单击该元素并复制 outerHTML。

更新:扩展已发布!命名为转储Dom
chrome store
github source

我找到了一种更好的方法来将当前的 dom 树转储到 html 文件(以在 element 选项卡中保留对 dom 树的更改) ,只需将下面的代码粘贴到控制台,就会下载一个 dom.html 文件。

filename = "dom";
var html = '',
  node = document.firstChild
while (node) {
  switch (node.nodeType) {
    case Node.ELEMENT_NODE:
      html += node.outerHTML
      break
    case Node.TEXT_NODE:
      html += node.nodeValue
      break
    case Node.CDATA_SECTION_NODE:
      html += '<![CDATA[' + node.nodeValue + ']]>'
      break
    case Node.COMMENT_NODE:
      html += '<!--' + node.nodeValue + '-->'
      break
    case Node.DOCUMENT_TYPE_NODE:
      // (X)HTML documents are identified by public identifiers
      html +=
        '<!DOCTYPE ' +
        node.name +
        (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') +
        (!node.publicId && node.systemId ? ' SYSTEM' : '') +
        (node.systemId ? ' "' + node.systemId + '"' : '') +
        '>\n'
      break
  }
  node = node.nextSibling
}


var file = new Blob([html], {
  type: 'text/html'
});
if (window.navigator.msSaveOrOpenBlob) // IE10+
  window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
  var a = document.createElement("a"),
    url = URL.createObjectURL(file);
  a.href = url;
  a.download = filename;
  document.body.appendChild(a);
  a.click();
  setTimeout(function () {
    document.body.removeChild(a);
    window.URL.revokeObjectURL(url);
  }, 0);
}

灵感来自这个项目:https://github.com/wingleung/save-page-state。 我会开发一个扩展,以便稍后使点击转储功能正常。