2012-02-09 36 views
2

当您使用“另存为”命令时,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

http://dsgdev.wordpress.com/2006/09/27/save-as-real-data-when-the-page-is-generated-with-javascript-documentwrite/

任何帮助将非常感激。

+0

虽然一个有趣的问题,通过另存为......保存页面是没有办法,形状或形式我意识到标准化,也没有要求。因此,您可能仅仅希望这一功能在各个浏览器中保持一致。 – deceze 2012-02-09 04:53:35

+0

任何解决方法的建议?我在想唯一的解决方法是需要一台服务器,而这个应用必须离线工作。 – captainclam 2012-02-09 04:54:54

回答

1

如果您按F12,开发人员工具将打开。点击Save按钮开发者工具窗口,它会将当前版本的DOM保存为HTM文件。

您必须单独保存其他资源(图像,js,css等)。

+0

感谢您的建议,但这不是一个可行的解决方案。 – captainclam 2012-02-10 04:52:17

+0

@captainclam,你可以给我们一些关于为什么这不是一个可行的解决方案的更多细节?除了仅保存当前版本的页面及其资源之外,您还需要什么?你还在找什么? – CodeThug 2012-02-10 14:28:56