2012-02-09 57 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