2010-09-28 237 views
2

我試圖重新加載一個iframe類似如下:IFRAME .load事件不觸發

var frameObject = $('#myFrame'); 
var frameAsInDom = frameObject[0].contentWindow; 
var currenctLocation = frameAsInDom.location; 
frameObject.attr('src', 'about:blank'); 
frameObject.contents().remove(); // This was a desperate statement!! 
frameObject.attr('src', currentLocation).load(function(){ 
    alert('iframe reloaded'); 
}); 

問題是iframe的.load事件沒有得到觸發的。我沒有收到負載回撥內的警報

回答

5

你混合綁定和事件的觸發,

錯字看到這個代碼:http://jsfiddle.net/BvQuk/1/

HTML

<iframe id="myFrame" src="http://google.com"></iframe><br/> 
<input id="uxButton" type="button" value="Reload the frame" /> 

JS

$(document).ready(function() { 
    var iFrame = $('#myFrame'); 

    iFrame.bind('load', function() { //binds the event 
     alert('iFrame Reloaded'); 
    }); 

    $('#uxButton').click(function() { 
     alert('onButtonClick OR onBeforeReload'); 
     var newSrc = iFrame.attr('src') + '?c=' + Math.random(); //force new URL 
     iFrame.attr('src', newSrc); //changing the src triggers the load event 
    }); 

}); 

希望有幫助。

+0

如果我需要不同的處理程序進行加載和重新加載,該怎麼辦? – ZX12R 2010-09-28 10:36:55

+0

加載和重新加載在內部是一樣的,你請求一個網頁加載到一個iframe中,你可以做的是聽第一個加載並在那裏激發一個事件,如果是這樣的話,讓我知道,我會給你一個例子。問候。 – xmarcos 2010-09-28 15:39:08

+0

問題是這樣的......最初當我給iframe分配一個src時,會附加一個加載事件...當我重新將url分配給iframe時,我附加了一個不同的加載事件處理程序......在重新分配第一個處理程序之後,不是第二個.. – ZX12R 2010-09-29 13:02:38

1

呃! javascript錯誤.. currentLocation未定義。在var currenctLocation

working demo

+0

對於錯字感到抱歉...已經在小提琴中進行了更新..加載回調沒有正常啓動..http://jsfiddle.net/4tRWq/2/ – ZX12R 2010-09-28 07:27:35

+0

[demo](http:// jsfiddle.net/4tRWq/3/)< - 看演示。並嘗試根據所做的警報來實現它。 – Reigel 2010-09-28 07:31:37

+0

你的問題是你的綁定'.load()'兩次... – Reigel 2010-09-28 07:32:26