当您使用“另存为”命令时,Internet Explorer(所有版本)似乎完全忽略对DOM所做的任何更改,在第一次加载时将保存的版本恢复为网页状态。这会影响您尝试保存应用程序当前状态快照的JavaScript应用程序。保存完整的网站 - Internet Explorer和JavaScript生成的代码
在以下简单示例中,当您加载页面时,会出现一个随机数字。将此页面保存在Firefox或Chrome中会导致保存的文档中的数字处于固定状态(因为下次打开它时,.generateRandomNumber范围已被删除并被覆盖,所以JS未执行)。
<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery(function($) {
if ($('.generateRandomNumber').length) {
var randomNumber = Math.round(Math.random() * 1000);
$('.generateRandomNumber').remove();
$('body').html(randomNumber);
}
});
</script>
</head>
<body>
<span class="generateRandomNumber"></span>
</body>
</html>
您也可以通过执行从IE控制台下面看到的行为:
var w = window.open();
w.document.body.innerHTML = "Hello world. Please save me";
另一个简单的例子,可运行下面的脚本到任何页面(从IE浏览器,开发者控制台)。运行它,观看HTML被擦除,保存,打开保存的版本,并看到原始网站重新出现。
document.body.innerHTML = "";
保存该新文档,当您下次打开文档时文本将消失。
我查看下面的页面,但现在找到任何解决办法:
Save the document generated by javascript
任何帮助将非常感激。
虽然一个有趣的问题,通过另存为......保存页面是没有办法,形状或形式我意识到标准化,也没有要求。因此,您可能仅仅希望这一功能在各个浏览器中保持一致。 – deceze 2012-02-09 04:53:35
任何解决方法的建议?我在想唯一的解决方法是需要一台服务器,而这个应用必须离线工作。 – captainclam 2012-02-09 04:54:54