2

我已经有一个 Javascript 文件(执行一些功能),它将附加到网页上。现在我希望 Javascript 收集整个网页及其 html 标签、图像、外部 Javascript 文件和外部 css 文件。我不想在这里使用 Jquery/任何其他外部库。

我的动机是获取整个网页,将其保存,并将其显示为与原始网页相似。

Javascript可以做到这一点吗?

任何帮助将不胜感激。

4

1 回答 1

1

简短的回答 - 否

不,使用 JavaScript 是不可能的,尤其是“保存”部分,因为 JavaScript 在浏览器环境中没有文件访问权限(我们在此假设),除非在开发浏览器扩展或显式修改浏览器的安全属性以允许此操作时.


长答案 - 如果你真的必须:漫长而曲折的道路......

加载正确的内容

首先,您需要确定是要获取静态状态的页面(因为它是在第一个页面加载时由服务器发送的),还是当前呈现的状态(在浏览器中呈现之后,并且脚本已执行并可能已向页面添加内容)

加载资源

然后,您需要遍历 DOM 的所有元素,并获取所有外部资源(包括 CSS 文件中引用的资源)。

您可能希望在您的请求中使用 HTML 或纯文本 mime 类型获取所有资源,否则您的浏览器可能会通过最终用户弹出窗口触发可见下载,而根本不会执行透明下载。

更新所有参考

接下来,您需要弄清楚您希望如何组织“下载”的内容,以及将资源放在哪里以及如何命名它们以避免冲突。

完成后,您需要再次遍历所有 DOM 元素并更新引用以使用本地资源的路径而不是本地资源。

将内容写入磁盘

现在最后一点是使用浏览器的自定义 API 或HTML5 文件系统 API将所有这些资源保存到磁盘。


这里是龙

这些都不能保证你会实现你想要的,因为一些页面仍然可能包含一旦像这样下载后表现不佳的代码。可能有代码从远程 URL 请求内容或假设某些目录结构和端点,或使用您可能已修改的资源名称等......(这很奇怪,但并不少见)。

于 2012-07-10T15:04:02.190 回答