“今天才注意到jQuery(...).html()方法返回的HTML會過濾掉所有的<script>塊,但有時候,特別是在AJAX應用中,常常是需要保留HTML中的<script>塊的,比如局部更新含腳本的內容,此時切忌不要用html()來讀寫HTML,還是要老老實實用elem.innerHTML。今天因為這個問題浪費了1個小時,特此給大家提個醒。”
經過測試發現,新版本(1.3.2之後的,之前版本未考證過)的jQuery(...).html()方法已經不存在該問題(html()方法是一個讀Dom元素數據的操作),但是當用html(data)方法寫數據到Dom元素並且data參數中包含script腳本時,又出現了異常現象:在Firefox(我用的3.6)浏覽器下執行上述操作,data參數裡面的script腳本會自動運行,引起頁面破相、異常等錯誤,比如我遇到的問題就是:在script中存在document.write方法時,在執行完html(data)操作後整個頁面的原有的dom元素都消失了,只剩下document.write()方法的執行結果,引起了頁面破相;具體原因待討論,最後還是用elem.innerHTML=data這種方式解決了這個問題,特此標記。