|
這種錯(cuò)誤從何調(diào)起?后面沒(méi)辦法,又是猜測(cè)又是try...catch蹦錯(cuò)誤,找了半天終于找到錯(cuò)誤的位置,可是發(fā)現(xiàn)寫(xiě)的并沒(méi)有什么問(wèn)題,后來(lái)絞盡腦汁思考程序的解釋過(guò)程,確依舊沒(méi)有什么頭緒。繼續(xù)baidu,突然在某網(wǎng)頁(yè)中看到一句話:當(dāng)一個(gè)頁(yè)面關(guān)閉時(shí)會(huì)自動(dòng)釋放頁(yè)面的js。短短一句話給了我不小的啟發(fā)。檢查我的程序是否有頁(yè)面的關(guān)閉或轉(zhuǎn)向,發(fā)現(xiàn)是執(zhí)行了轉(zhuǎn)向,然后再回到這個(gè)頁(yè)面時(shí)出現(xiàn)了錯(cuò)誤。突然間覺(jué)得明白了。
場(chǎng)景:頁(yè)面有a和b兩個(gè)框架頁(yè)iframe,在b頁(yè)面中通過(guò)js將一個(gè)函數(shù)引用傳入到a頁(yè)面保存在a頁(yè)面的一個(gè)變量中,a頁(yè)面可以通過(guò)這個(gè)引用執(zhí)行b頁(yè)面的一些程序,當(dāng)b頁(yè)面刷新后由于a頁(yè)面對(duì)b頁(yè)面的引用已經(jīng)丟失,但a中仍然保存著b頁(yè)面之前傳過(guò)來(lái)的引用,但當(dāng)前的引用已經(jīng)不能引用到b頁(yè)面,這樣在執(zhí)行時(shí)就會(huì)出現(xiàn)“不能執(zhí)行已經(jīng)釋放的Script代碼”
解決辦法:在a頁(yè)面中加上容錯(cuò)處理,當(dāng)引用出現(xiàn)錯(cuò)誤時(shí)要將引用清空或指向一個(gè)默認(rèn)的函數(shù)。另外在b頁(yè)面再次載入時(shí)要重新給a頁(yè)面?zhèn)魉秃瘮?shù)引用,這樣就不會(huì)出現(xiàn)這樣的錯(cuò)誤了。
或許這里的描述有些過(guò)于抽象了,看一個(gè)演示再看看代碼就容易明白了,先test,然后return url,之后再test就會(huì)出現(xiàn)這個(gè)問(wèn)題了
JavaScript技術(shù):出現(xiàn)“不能執(zhí)行已釋放的Script代碼”錯(cuò)誤的原因及解決辦法,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。