最近開發遇到一個問題,數據庫某個字段里面存着整個html代碼。需求是預覽的時候需要可視化,將html直接展示到頁面。
那么問題來了:
1、需要展示的html中的樣式會與外面的頁面沖突。
2、直接加載數據中的html,可能存着一些腳本錯誤。
首先想到的解決辦法是用iframe,但是iframe是直接加載某個頁面。
想到的方法是:
iframe加載一個空頁面,將HTML代碼直接填充到空頁面,然后顯示。
這種方式可以成功。然而因為某些原因html代碼不能再次從數據庫讀取,html代碼參數需要傳遞,然而iframe的src加載是get請求,get請求的參數大小有限制,所以只能用post.
這里需要用form表單的post請求,只需將form的target與iframe的name保持一致:
html代碼:
<form id="myForm" method="post" target="myFrame"> <input type="hidden" name="datas" id="data_param" /> </form> <iframe name="myFrame" width="500px" height="200px;" ></iframe>
$("#data_param").val(dp); $("#myForm").attr("action", "/java/loadHtmlData"); $("#myForm").submit();
python代碼:
def loadHtmlData(request): datas = request.POST.get('datas') return render(request, "crawler_result_iframe.html", { "datas": datas })
crawler_result_iframe.html為空白html
因此這里只需要將form的target屬性的值與frame的name保持一致,即可實現iframe的post方式加載數據。