【问题标题】:Is it possible to dump the DOM with JavaScript and preserve CSS effects and layout?是否可以使用 JavaScript 转储 DOM 并保留 CSS 效果和布局?
【发布时间】:2014-12-03 20:32:05
【问题描述】:

我需要一种方法来获取页面中已经加载的网页并保存页面的完整 DOM(作为 HTML 字符串),这样如果我将 HTML 作为单个文件离线加载,它将保留以下效果所有 CSS 和任何脚本在保存之前都已运行。保留图像将是一个好处,但即使它们丢失但带有占位符以便保留布局也很好。

问题是我无法重新加载或重新查询任何资源文件 (JS/CSS)。字体并不重要。

这意味着生成的 HTML 不能引用外部文件。这甚至可以仅使用 JavaScript 实现吗?

编辑:

1) 这需要是使用 JavaScript 的编程解决方案,而不是浏览器 UI 解决方案。

【问题讨论】:

  • 我想您可以对所有外部资源发出 AJAX 请求,然后在输出 html 字符串之前“排列”它们。您甚至可以找到一个 js 库来对图像进行 base64 编码以内联它们。不过,似乎有很多代码/工作。
  • 不幸的是,我无法发出 AJAX 请求,因为我无法假设如果页面受到某种类型的登录保护,我仍然会有一个有效的会话。我需要一个解决方案,从字面上获取页面中的内容并保留它。有没有办法自省每个元素的当前状态并在将其从 DOM 中转储后装饰 HTML 以保持布局完整?
  • 您只是想保留视觉外观吗?或者,还有完整的交互性(例如 javascript)?前者比后者更有可能。
  • @Whoookie:他的意思是在捕获页面时而不是在加载页面时发出 AJAX 请求。基本上找到所有的 css 文件并读取它们的内容并将它们粘贴到一个大的 <style> 块中。

标签: javascript html dom


【解决方案1】:

您可以将整个 HTML 连同内联 CSS 作为 var in 存储在 JavaScript(您编写的)中。也许您可以编写一些使用 HTML5 本地存储的 JS 来存储外部 JS/CSS 资源,然后在离线加载页面时使用它们。

【讨论】:

  • 我不会认为这是对答案的尝试,但我不会投反对票,因为我知道您没有足够的声誉来使用 cmets 部分...
猜你喜欢
  • 1970-01-01
  • 2011-03-13
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多