如何在应用所有样式并删除javascript的情况下捕获运行时html内容/状态
How to capture the runtime html content/state with all styles applied and javascript removed
问题的较短版本
是否有任何方法可以捕获运行时html(dom的当前状态)以及动态(ajax/javascript)网页的所有应用/内联样式?
更长版本
我想做的是将dom的当前状态保存为单个html页面,所有样式要么封装在应用的<style>
标记中,要么内联样式。
类似地,我需要的是一些类似于coredump文件(它给出了应用程序的当前状态)的东西,但在本例中是一个(html)文件,可以加载到borwser中进行查看/调试。
如果页面中没有javascript,这个任务将非常容易。
- 从web浏览器执行
File->Save Page As -> html complete
- 或者使用以下工具http://www.httrack.com或卷曲以下载页面和所有链接的图像
以下列出了在高级中可以用程序做同样的事情(尽管不是完整的解决方案)
- 获取html内容
- 像onclick一样从每个标签中删除所有标签和onXXX属性
- 获取*.css内容
- 在
<style>
中嵌入css样式 - 将所有图像路径更改为相对路径
- 保存所有图像
但是,当使用javascript构建页面时,或者如果页面的状态在加载/点击时发生了变化,比如一些元素被隐藏,页面的布局发生了改变,则不能使用上述方法。
那么,如何保存(启用动态javascript)网页的当前状态呢?
如果存在这样的方法/工具/插件,那么与无法访问互联网或web应用程序的人通过电子邮件/共享页面会很方便
所以我假设你想在桌面上做这件事?然后我会使用一个首选的无头浏览器,比如phantomjs,并禁用跨站点脚本。编写javascript,将您的目标URL加载到iframe中,获取其dom并将其保存到文件中。您仍然需要手动保存所有CSS,不确定如何内联。
关于如何获取DOM的当前状态。
您可以使用jQuery的.html()来获取当前DOM。
var DOMState = $('html').html();
您可以编写一个bookmarklet来注入jquery(请参阅http://blog.reybango.com/2010/09/02/how-to-easily-inject-jquery-into-any-web-page/例如),然后捕获html。
- 在禁用浏览器flash插件的情况下运行Karma测试
- InvalidOperationException:当应用程序未在UserInteractive模式下运行时显示模式对话
- 在不加载页面的情况下运行javascript
- CSS转换获胜't在没有“setTimeout”的情况下运行
- CSS 转换不会在没有 setTimeout 的情况下运行
- 我的javascript不会在没有警报的情况下运行
- Apache Cordova:在不启动浏览器应用程序的情况下运行Cordova运行浏览器
- 强pm不会在NODE_ENV=生产的情况下运行
- Javascript在不打算运行的情况下运行多次
- 在不安装Zend优化器的情况下运行php文件
- 如何在没有缓存/cookie的情况下运行/调试Web应用程序项目
- 仅在尚未运行jQuery UI的情况下运行动画
- 如何在启用ES6功能的情况下运行Node.js应用程序
- 如何在没有网络工作者的情况下运行多个脚本
- 节点包因果报应没有在没有信息的情况下运行
- 如何在不阻塞脚本的情况下运行脚本
- 是否可以在不重新加载的情况下运行注入的脚本
- 使用 setTimeout 在不阻止输入的情况下运行大型任务,并使用 Promise 找出任务何时完成
- 使此代码在不使用匿名函数的情况下运行
- 如何在没有服务器的情况下运行 HTML 时将文件夹设置为根路径