我正在尝试制作一个书签应用程序。我希望用户能够保存网页的特定部分。
我正在考虑保存一些坐标从原来的目标网页与其完整的静态副本。这样,当用户打开保存的副本时,他就会得到与选定部分的坐标完全相同的原始网页副本。我需要保存副本,因为网页上的内容会随着时间的推移而改变。
This有一点帮助。我在他们的网站上尝试了预邮件在线工具,但是它无法捕获重的js站点。我在后端使用node.js。
请引导我朝正确的方向走。谢谢!
发布于 2014-02-27 16:17:36
让我们考虑一下这个问题的两种情况:
使用HTML解析器实现第一种情况非常简单。我不打算讨论这个问题,因为您提到了“重型js站点”,这似乎意味着您对第二个案例感兴趣。
@Bergi (关于这个问题的第一个评论)有一个正确的想法:加载页面,然后存储下载的所有内容。但是,您必须有某种方法将其作为静态HTML页面打开。这可以通过将所有AJAX调用重写为原始函数调用来实现。(剧透者:这是一种非常糟糕的方法)
例如:
$.get(url, data, callback);需要转化为:
callback(response);这不是一项琐碎的工作。JavaScript是一种非常灵活的语言。实现AJAX调用的方法太多了,因此以这样的方式重写JS是不可行的,因为这样的方式适用于所有JS代码。更糟糕的是,代码可能依赖于AJAX调用不立即返回(糟糕的表单和糟糕的想法,但这毕竟是互联网)。
如果您愿意离开独立的静态HTML解决方案,这个问题可以简化。您可以实现一个chrome或firefox扩展(或一个独立的应用程序),它将所有所需的数据保存到缓存中,然后--在加载保存的版本时--强制它从缓存中提取,或者使用伪造的XMLHttpRequest对象来防止查询远程服务器。您还可以在此环境中伪造日期/时间和其他外部状态变量。
我处理这个问题的方法是采用现有的可自定义呈现器(如Chrome、Firefox)并实现上面描述的扩展。
无论如何,我会认真地重新考虑这种解决办法的必要性。还能有更简单的东西(在浏览器中加载HTML图片地图链接的屏幕截图吗?)解决问题?我觉得这个问题可能不需要这么复杂的解决方案,但是对于你的问题并没有给出太多的细节,所以我很可能错了。
https://stackoverflow.com/questions/22073659
复制相似问题