關(guān)于JQuery的html(data)方法與<script>腳本塊
來源:程序員人生 發(fā)布時間:2013-12-29 19:40:56 閱讀次數(shù):3370次
在使用Jquery的html(data)方法執(zhí)行寫數(shù)據(jù)到Dom元素時遇到一個問題:在data參數(shù)中包含script腳本塊的時候,html(data)方法的執(zhí)行結(jié)果與預(yù)期不符,Teddy's Knowledge Base2008-04-22也曾經(jīng)在這里提到過類似的問題,原文如下:
“今天才注意到j(luò)Query(...).html()方法返回的HTML會過濾掉所有的<script>塊,但有時候,特別是在AJAX應(yīng)用中,常常是需要保留HTML中的<script>塊的,比如局部更新含腳本的內(nèi)容,此時切忌不要用html()來讀寫HTML,還是要老老實實用elem.innerHTML。今天因為這個問題浪費了1個小時,特此給大家提個醒。”
經(jīng)過測試發(fā)現(xiàn),新版本(1.3.2之后的,之前版本未考證過)的jQuery(...).html()方法已經(jīng)不存在該問題(html()方法是一個讀Dom元素數(shù)據(jù)的操作),但是當用html(data)方法寫數(shù)據(jù)到Dom元素并且data參數(shù)中包含script腳本時,又出現(xiàn)了異常現(xiàn)象:在Firefox(我用的3.6)瀏覽器下執(zhí)行上述操作,data參數(shù)里面的script腳本會自動運行,引起頁面破相、異常等錯誤,比如我遇到的問題就是:在script中存在document.write方法時,在執(zhí)行完html(data)操作后整個頁面的原有的dom元素都消失了,只剩下document.write()方法的執(zhí)行結(jié)果,引起了頁面破相;具體原因待討論,最后還是用elem.innerHTML=data這種方式解決了這個問題,特此標記。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈