2011-08-02 80 views
3

我想使用window.open()來創建一個彈出,然後打印,但我遇到了問題,IE8掛起後,它彈出了彈出。Javascript window.open和打印導致IE8掛起


更多細節:

在我的應用程序的結束,我想打印輸出的信息,但我想有一個單獨的CSS和jQuery和Javascript在彈出。我認爲這些外部鏈接導致IE8掛斷,但我不確定。

我測試過的所有其他瀏覽器會發生什麼情況,彈出窗口,顯示打印對話框,並且打印正常。

在IE8中,彈出窗口,內容出現,CSS顯示加載,但不是Javascript。如果您嘗試手動打印(Ctrl + P),則無需CSS即可打印。

我曾嘗試以下這裏的例子: Script elements written with document.write in a window opened with window.open are not executed in IE8 on Windows 7


現場演示

如果你想看到一個真人版,請訪問:http://roxulmaterialscalculator.com/ 您必須填寫該應用程序所需的信息,如果你想達到打印部分。 (在第二步中,只需填寫收音機輸入即可)。

要查看完整的javascript:http://roxulmaterialscalculator.com/js/scripts.js在哪裏你會發現我嘗試過的其他方法。


代碼

通行證的元素給函數

$('#actionPrint').live('click', function(event){ 
    printElem('#rc'); 
} 

彈出的元件並打印出來。

function printElem(elem) { 
    popup($j(elem).html()); 
} 

function popup(data) { 
    var mywindow = window.open('', 'printSheet', 'height=500,width=800,scrollbars=1'); 
    mywindow.document.open(); 
    mywindow.document.write('<html><head><title>Roxul Insulation Calculator</title>'); 
    mywindow.document.write('</head><body>'); 
    mywindow.document.write('<div id="rc_logo"><img src="img/roxul-logo.png" alt="roxul-logo" /></div>'); 
    mywindow.document.write(data); 
    mywindow.document.write('</body></html>'); 

    var c = mywindow.document.createElement("link"); 
     c.rel = "stylesheet"; 
     c.type = "text/css"; 
     c.href = "css/print.css"; 
     mywindow.document.getElementsByTagName("HEAD")[0].appendChild(c); 

    var s = mywindow.document.createElement("script"); 
     s.type = "text/javascript"; 
     s.src = "js/jquery-1.5.2.min.js"; 
     mywindow.document.getElementsByTagName("HEAD")[0].appendChild(s); 

    var s2 = mywindow.document.createElement("script"); 
     s2.type = "text/javascript"; 
     s2.src = "js/print.js"; 
     mywindow.document.getElementsByTagName("HEAD")[0].appendChild(s2); 

    mywindow.print(); 
    return true; 
} 
+0

我只是猜測,但也許它是懸掛的,因爲窗口實際上並沒有加載之前,你告訴它打印。試試這個彈出窗口:''並跳過在頭部加載這些js文件(如果你只是在打印,我懷疑你需要在jQuery中彈出任何東西) – Flambino

回答

5

我已經解決了我自己的問題,所以希望這不是壞的形式來回答自己的問題。

我的錯誤是不包括在我的函數結束mywindow.document.close();。 現在看起來如下:

mywindow.print(); 
mywindow.document.close(); 
return true; 

我與我工作的開發者之一發言,他說,document.close()釋放資源以進行打印。

+0

給定你剛剛幫助我擺脫束縛,我不會說這回答你自己的問題是一種糟糕的形式。謝謝!! – abeger