2016-02-01 58 views
-1

我有一個Web應用程序,它上面有一些iframe,其中一些在任何給定的時間都是隱藏的。用戶可以通過頁面上的控件選擇哪些iframe可見。使用JavaScript「凍結」iframe?

現在,我通過將「未選定」iframes樣式設置設置爲display: none來完成此任務,並且這完成了我想要的操作,但我希望從中獲得額外的好處 - 這些iframe具有運行Javascript的功能在他們中。當它們不可見時,使用計算機資源來讓Javascript運行沒有任何好處。

有什麼辦法可以「凍結」一個iframe,即暫停JS執行?我的Google搜索尚未發佈任何內容,所以我並不期待它,但如果有這樣一種方式,那將是一個不錯的成就。

謝謝!

+1

那麼,如果沒有*發生*他們,沒有JS會在他們執行,你沒有任何長期運行的腳本或積極的溝通,你呢? – Bergi

+0

爲什麼不把它們完全從你的頁面中刪除,而不是隻隱藏它們? – Bergi

+0

總之,你是谷歌是正確的:「不,沒有辦法做到這一點」... – dandavis

回答

1

你可以對常見的事件使用event.preventDefault()這樣的:

<script type="text/javascript"> 
    document.getElementById("iframe").onclick = function(event) { 
    return false; 
    }; 
</script> 

據我知道你不能捕獲事件iFrame中,但你可以包括這在iframe的HTML。

<script type="text/javascript"> 
    // don't forget all the other events you would like to stop 
    toStop = ["click", "mousemove", "keypress"] 
    for(var i = 0; i < toStop.length; i++) { 
    iframe = document.getElementById("your-target-iframe"); 
    iframe.addEventListener(toStop[i], function(event) { 
     return false; 
    }, false); 
    } 
</script> 

在jQuery中:

<script type="text/javascript"> 
    // don't forget all the other events you would like to stop 
    jQuery(document).ready(function() { 
    $.each(["click", "mousemove", "keypress"], function(index, eventToStop) { 
     $("#your-target-iframe").on(eventToStop, function(event) { 
     event.preventDefault(); 
     }); 
    }); 
    }); 
</script> 

注:這些都是一些「哈克」的方式去了解這個問題,並請記住,您的谷歌搜索是正確的,有沒有標準的方式來做這個。