2014-09-10 39 views
0

如何使用帶有內部Javascript的JSP來將符合HTML的字符串寫入新窗口?從JSP中的Javascript將HTML-String寫入新窗口


我們的處境:
- 即使世界由Tomcat的服務器使用的.jsp,文件
- 這個.jsp包含<script language="Javascript> -Tag
- 這個腳本需要寫一個完整的HTML-5
:使用window.open'window'.document.write(htmlString)


我們的.jsp-文件(示意圖)有效的字符串到一個新的窗口

我們的問題(示意圖):
- .JSP,文件被調用。
- .jsp文件調用JavaBean並將全局字符串變量設置爲HTML字符串(包括<script> -Tags,DocType-Declarations等)
- .jsp-File將所有出現的變量替換爲得到的字符串
- 的JavaScript(<script> -Tag中的.jsp-文件)被執行
- <script>的Javascript -Tag已經關閉,之前「window'.document.write(strHTML中)被執行,因爲那裏有一個</script> - 在Javascript中使用標記 例如

<script language="Javascript"> var strHTML = "<!DOCTYPE html> <html> ... <script> ... </script> ... </html>; var win = window.open(...); win.document.write(strHTML); </script>



- 我搜索了相當長的一段時間了,我沒有一個線索如何來解決這個問題。
- 將HTML源代碼寫入服務器 - 文件系統並稍後訪問或類似的東西真的很髒。
- 問題的一部分是,我們(當然)必須在.jsp文件中使用這種類型的JavaScript調用,因爲歷史原因... ;-)
- 是否有一種方法可以將strHTML - 僅通過參考在.jsp文件中更改(例如,無需替換<%= strOutput%> - 變量)?

附加信息:
的HTML字符串代用於在我們的節目,多次的各個地方,所以我希望不要有逃避任何特殊CharacterSequences這個特定呼叫工作。



感謝所有您的幫助和想法,這... ;-)

解決: 也Why split the tag when writing it with document.write()?見這個問題。

回答

0

必須將字符串<\/script>在逃避關閉腳本,除非該文件撰寫住在外部.script

還記得關閉文檔,並在參數窗口沒有空格。開放

這樣

<script type="text/javascript"> 
    var strHTML = '<!DOCTYPE html> <html> ... <script> ... <\/script> ... </html>'; 
    var win = window.open("","winname","resizable,scrollbars"); 
    win.document.write(strHTML); 
    win.document.close(); 
</script> 
+0

的建議似乎合法的,我已經添加了一些額外的信息的問題... ;-)還是要謝謝你,我會保持它作爲可能的解決方法在後面我心... xD – doldi04 2014-09-10 14:13:29

+0

不確定你的意思。如果您需要document.write腳本標記,則需要轉義結束腳本標記,除非document.write存在於外部.js文件中。問題結束。 – mplungjan 2014-09-10 14:18:40

+1

你是對的,在這裏找到一些解釋: [爲什麼在使用document.write()寫入