2008-11-05 69 views
2

我有一個應用程序使用window.open()來生成動態彈出窗口。不幸的是,我在使用標準DOM函數(createElement,appendChild)創建新窗口的內容時遇到困難,並且我已經使用document.write()來生成頁面。重構使用window.open使用DOM而不是寫入的函數()

具體地說,我怎樣才能從這個去:

function writePopup() 
{ 
    var popup = window.open("", "popup", "height=400px, width=400px"); 
    var doc = popup.document; 
    doc.write("<html>"); 
    doc.write("<head>"); 
    doc.write("<title>Written Popup</title>"); 
    doc.write("</head>"); 
    doc.write("<body>"); 
    doc.write("<p>Testing Write</p>"); 
    doc.write("</body>"); 
    doc.write("</html>"); 
    doc.close(); 
} 

要創建使用DOM一樣彈出的功能?

編輯:我確實考慮過使用絕對定位的元素來模擬彈出窗口,雖然看起來更好,但用戶需要能夠打印顯示的信息。

回答

1

爲什麼不使用庫函數如http://plugins.jquery.com/project/modaldialog而不是重新發明輪子?

[編輯] OR

function writePopup(){ 
    var popup = window.open("", "_blank", "height=400px, width=400px"); 
    var doc = popup.document; 
    doc.title = 'Written Popup'; 

    var p = doc.createElement('p'); 
    p.innerHTML = 'Testing Write'; 
    doc.body.appendChild(p); 
} 
+1

的用戶需要能夠打印彈出,這就排除了任何使用人造彈出,像模塊的內容。 – 2008-11-05 15:21:13

0

纔有可能有產生動態內容的另一頁,並彈出它打開,通過該標識要生成的內容的論點,而不是試圖寫一個新窗口?

2

只是在做快速測試,我可以得到的文檔附加DOM創建HTML我彈出像這樣:

var popup = window.open("", "popup", "height=400px, width=400px"); 
var doc = popup.document.documentElement; 
var p = document.createElement("p"); 
p.innerHTML = "blah"; 
doc.appendChild(p); 

我的例子會產生完全無效的HTML我知道,但它的工作原理(與有限的測試很明顯)。

2

一個.innerHTML轉儲應該執行比zillion行更好的document.write();

需要我會建立DOM和使用

doc.innerHTML = newDOM; 

還有一種哈克傾倒,但比文件撰寫好();

2

我已經去使用document.write()來生成頁面。

我想你可能會需要使用至少一些document.write()的,把一個骨架頁面到位之前,你可以與DOM交互:

doc.write('<!DOCTYPE ...><html><head></head><body></body></html>'); 
doc.close(); 
doc.body.appendChild(...); 

寫()之前有被調用,新窗口的文檔處於不確定狀態,沒有文檔可以與之交互。在你首次調用document.write()之前,Firefox至少會放入一個臨時的骨架文檔,但是我看不到這是實際記錄在任何地方,所以最好不要依賴它。

var popup = window.open(「」,「popup」,「height = 400px,width = 400px」);

window.open中不需要'px'單元。

0

你可以使用類似

function writePopup(){ 
    var htmlString=[ 
    "<html>", 
    "<head>", 
    "<title>Written popup</title>", 
    "</head><body>", 
    "<p>Testing write</p>", 
    "</body></html>" 
    ].join("\n"); 
    window.open("data:text/html,"+encodeURIComponent(htmlString), "_blank", "height=400px, width=400px"); 
} 
相關問題