在我們使用AJAX的時候,經(jīng)常要用到innetHTML來更新對象的內(nèi)容,但是對于更新的<script>腳本程序瀏覽器卻無法執(zhí)行,它不執(zhí)行的原因是:<s-cript>標(biāo)簽只在瀏覽器第一次文檔加載中被解析,下面介紹怎么樣讓<script>跑起來。
分析問題
既然<script>只在文檔加載中才被解析,那么我就得調(diào)用document.write()方法來重新加載一次,但是這樣的話原來頁面的內(nèi)容也會被覆蓋掉了-,所以不得不用IFRAME把document.write()裝載起來。
解決問題
var jsCode = 需要執(zhí)行的JS代碼
var jsIframe = document.createElement("iframe");
jsIframe.style.display = "none";//把jsIframe隱藏起來
document.body.appendChild(jsIframe);
with(window.frames[window.frames.length - 1]){
document.open();
document.write(jsCode); //執(zhí)行JS代碼
document.close();
}
jsIframe.outerHTML="";//執(zhí)行后刪除iframe對象
這里需要注意一個問題,因為jsCode是在iframe中運行,所以所有的頁面元素都在iframe父對象之下,要調(diào)用頁面元素對象必須得用 parent.obj 這種方式。