Chrome 开发工具导出元素 HTML

Posted

技术标签:

【中文标题】Chrome 开发工具导出元素 HTML【英文标题】:Chrome Dev Tools export Elements HTML 【发布时间】:2015-03-24 22:39:42 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

选择顶部节点并选择“复制”。不过,您必须重新添加 Doctype。

或者,您可以点击“编辑为 HTML”并从那里复制。

【讨论】:

谢谢。就是这么简单。难怪我没有用谷歌找到它。我怎么看不到这个菜单...【参考方案2】:

您可以尝试以下方法:

您所要做的就是右键单击该元素并复制outerHTML。

【讨论】:

@Suncatcher 不完全确定,但我认为是这样。也许您可以再次执行类似 document.getElementById("id going here").outerHTML 之类的操作,不确定但必须有办法。【参考方案3】:

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

我找到了一种将当前 dom 树转储到 html 文件的更好方法(将您对 dom 树的更改保留在 element 选项卡中),只需将以下代码粘贴到控制台和 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。 而且我会开发一个扩展功能,以便稍后实现点击转储功能。

【讨论】:

以上是关于Chrome 开发工具导出元素 HTML的主要内容,如果未能解决你的问题,请参考以下文章

获取 Google Chrome 开发工具中选定元素的所有 CSS 规则

chrome 开发者工具——前端实用功能总结

Chrome开发人员工具不会检查body标记内的元素(mac OSX)

如何将 Node.js V8 分析信息导出到 Chrome 的开发工具性能配置文件?

如何导出谷歌浏览器Chrome的书签

播放 html5 视频时,网络开发工具上的 chrome-status 已取消