我的問題的簡短版本是「我在Internet Explorer 8中遇到錯誤 - 如何更改我的代碼以完成我的任務而不會出現該錯誤?」「這個網頁無法保存」錯誤在Internet Explorer 8中
長版本:我有一個網站,其中一些動態生成的頁面在頂部有一個「保存此頁面」鏈接。點擊鏈接將使用javascript的window.open()在較小的彈出窗口中啓動頁面內容的簡單版本(剝去頁眉和頁腳等)。彈出的頁面菜單欄= 1,以便用戶可以使用文件>另存爲...並保存頁面。 (這是一個相當笨拙的方式來實現保存,但我找不到任何更好的解決方案,具有足夠寬的瀏覽器兼容性。)
這適用於我測試過的每個版本的Chrome或Firefox,並且在IE9中, IE10,並且或者在兼容模式下這些瀏覽器7或8,但用戶究竟是誰擁有IE8的看到這種現象:
- 在正常的,漂亮的風格的網頁,點擊「保存此頁」鏈接
- 在裸機彈出框中,轉到文件>另存爲...
- 在保存對話框中,選擇一個位置並單擊保存
- 觀察保存進度條到達50%以上的地方,然後消失,以錯誤信息取代,其標題爲「錯誤保存網頁」,其全文爲「此網頁無法保存。 「
保存爲「網頁,完整」或「網頁存檔,單個文件」時會發生此情況。 在使用「網頁,僅HTML」時會保存,但我不希望我們的用戶會熟悉更改該選項。
我已經谷歌搜索,並看到了一些建議的原因,爲什麼一個給定的頁面將無法保存在IE8中。沒有適用於這種情況。
- 的一個元素缺少其href屬性 - 我簡化頁面沒有HREF元素。
- 一個包含的跨域CSS文件被阻止 - 我的簡化頁面具有淺色內聯樣式,但沒有CSS文件。
- 有一些JavaScript代碼IE不喜歡 - 我的簡化頁面沒有JavaScript。
- 該頁面的標題太長 - 我的標題小於40個字符。
- 該頁面是在Excel中創建的 - 它不是在Excel中創建的,或者其他任何可能會添加專有或異常標記的東西。
我們的網站是由美國各地的客戶使用的,所以我對瀏覽器版本,計算機設置等沒有太多的控制權。在我的代碼中是否存在會導致此問題的東西,這可以通過修復我的代碼來解決,而不需要從用戶的角度找出解決方法?
(修改增加:對不起,我應該已經意識到一些建議的答案會涉及到PHP,這是一個C#/ ASP.NET網站。)
(編輯2:正在保存的頁面是動態生成的,所以不能通過wget等任何創造性的方式直接從服務器請求。現在,一些AJAX魔術恰好產生了一串HTML特別是一個表,每一行對應於特定產品列表上的一個產品,這些產品可能已經被用戶過濾了)然後用window.open和document.write啓動一個彈出窗口,用來填充彈出窗口的頭部內容+生成的表格+標準的HTML標籤,如打開/關閉頭部和主體,這個document.write'd彈出窗口就是需要保存的東西。我在document.write調用中創建的各種字符串都是由可打印的字符組成的幾個小例外:
- \ n(這是隻添加到源很好地格式化爲這裏的 人)
- 任何非打印字符,可能是個別產品的標題/價格/ SKU的,從數據庫中抽取(我'不知道如何檢查,但這大概不是在許多不同的產品標題中,我無法找到在IE8中正確打印的單個列表)
除非document.write本身正在做某件事狡猾,我想不出書面內容可能成爲問題的一種方式。不要說沒有辦法,我想不出來。)
從這些麻煩的網頁之一的完整源代碼(現在有更多開放的HTML標記)跟隨...文件>另存爲失敗此時我在IE8中測試。
<!DOCTYPE html><html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>
Board & Volunteer Product List
</title>
</head>
<body>
<p style='font-size: small;'>This page was generated from http://localhost/Training-And-Events/Board-And-Volunteer-Training/Board---Volunteer-Product-List/ on 12-13-2013.</p>
<h2>
Board & Volunteer Product List
</h2>
<p style='font-size: small;'>Filtered by: Equipment. </p>
<table style="width: 100%; border: 0; padding: 0;">
<tr>
<td style='width: 80%;'><b><u>Title</u></b></td>
<td style='width: 10%;'><b><u>SKU</u></b></td>
<td style='width: 0%;'></td>
<td style='width: 10%;'><b><u><span style='text-align: right;'>Price</span></u></b></td>
</tr>
<tr><td colspan=4 style="border-bottom: 1px solid #dddddd; line-height: 3px;"> </td></tr>
<tr>
<td style='width: 80%;'>Passageways</td>
<td style='width: 10%;'></td>
<td style='width: 0%;'></td>
<td style='width: 10%;'></td>
</tr>
</table>
</body>
</html>
不幸的是,我不知道你的問題的答案,但也許下面是有趣的你。如果您有可能在服務器上安裝軟件,請嘗試https://code.google.com/p/wkhtmltopdf,以便爲用戶提供您的網頁的PDF版本。 –
我注意到兩件事:你錯過了開頭''標籤,我沒有在你的標記中看到一個'保存這個頁面'的鏈接,也沒有任何應該這樣做的JavaScript,這是否正確? – rene
究竟爲什麼它是互聯網瀏覽器 –