2011-04-07 186 views
0

我試圖用javascript打開一個新窗口,並使用當前窗口中的html填充它。有點像新窗口中的打印預覽和新的CSS。「遠程過程調用失敗」 - 僅限IE瀏覽器

function prnt() { 
     var pr = window.open("", "", "width=1020,height=750"); 
     pr.document.open(); 
     pr.document.write('<html><head><title>Test</title>'); 
     pr.document.write('<link href=print.css rel=Stylesheet></head><body>'); 
     pr.document.write(document.body.innerHTML); 
     pr.document.write('</body></html>'); 
     pr.document.close(); 
     pr.focus();} 

我從這裏調用這個函數:

<a id="print" href="#" runat="server" onclick="javascript:prnt();">PRINT</a> 

IE給我的錯誤遠程過程調用失敗,它似乎是指向這一行:
PR。 document.close();

儘管在FF中一切正常。有任何想法嗎?

編輯
我在Windows服務器上運行的2008 R2標準
SP1

EDIT2
如果我刪除pr.document.close();該頁面在IE中完美工作,完成顯示在狀態欄中。
但是,現在FF無法正常工作。該頁面從未實際停止加載。我想它正在等待pr.document.close();命令?

+0

我已經更新HTML – Niklas 2011-04-07 11:59:55

+0

什麼'WebForm_DoPostBackWithOptions(...)'做什麼? – 2011-04-07 12:01:19

+0

我已經更新它沒有.NET特定標籤。但我認爲問題出在JavaScript上。 – Niklas 2011-04-07 12:07:22

回答

1

,因爲它是一個簡單的解決方案。它不是那麼漂亮,但它似乎工作。
我換成這行代碼:

pr.document.close(); 

這一行:

if (navigator.appName != "Microsoft Internet Explorer") pr.document.close(); 
+0

當然這是一個醜陋的黑客攻擊,但它並不能解決你的*實際問題:例如,我也使用了'document .write'和'document.close'來填充一個新窗口,但我從來沒有在IE中出現這個錯誤。 – 2011-04-07 13:51:49

3

使用DOM ... document.write是evil

在如何做到這一點檢查here

+0

從本質上說,你是對的,但不是在寫入新窗口時:「我認爲你可能不得不使用至少一些document.write()來放置一個框架頁面,然後才能與DOM交互「([read on](http://stackoverflow.com/questions/265398/refactoring-a-function-that-uses-window-open-to-use-the-dom-rather-than-write/541456#541456 ))。 – 2011-04-07 13:12:24

+0

如果你可以提供一個使用DOM的工作JavaScript,我會將其標記爲最佳答案=) – Niklas 2011-04-07 13:15:54

相關問題