2010-08-02 83 views
0

去除比方说,我有一个HTML网页的iframe:我怎么能知道什么时候一定IFRAME被从页面

<iframe src="/script.php"></frame> 

的iframe是一个模式对话框窗口(我使用jQuery插件内对于模态窗口:http://opensource.steffenhollstein.de/templates/modalbox/)。

当模式框关闭时,其内部的iframe将从jQuery remove()方法中从页面的HTML中移除。

我怎么能注意到iframe已被删除并执行一些JavaScript代码?基本上我想要的是在模式框关闭后刷新页面。这是模态对话框插件关闭方法:

jQuery.fn.modalBox.close = function(settings){ 

    // merge the plugin defaults with custom options 
    settings = jQuery.extend({}, jQuery.fn.modalBox.defaults, settings); 

    if(settings.setFaderLayer && settings.setModalboxContainer){ 
     jQuery(settings.setFaderLayer).remove(); 
     jQuery(settings.setModalboxContainer).remove(); 
     jQuery("iframe.modalBoxIe6layerfix").remove(); 
    } 
}; 

回答

2

您可以添加一个事件触发的modalBox.close方法里面,听它:

jQuery(document).bind('modalclose'), function() { 
    // stuff to do when the modalbox closes 
}); 

var fn = jQuery.fn.modalBox.close; 
jQuery.fn.modalBox.close = function() { 
    fn.apply(this, arguments); 
    jQuery(document).trigger('modalclose'); 
}; 

您也可以应用自定义事件移除元素jQuery中:

(function() { 
    var ev = new $.Event('remove'), 
     orig = $.fn.remove; 
    $.fn.remove = function() { 
     $(this).trigger(ev); 
     orig.apply(this, arguments); 
    } 
})(); 

$('iframe').bind('remove', function() { 
    // do stuff when an iframe was removed 
}); 
+0

yoru答案中有一个小的错字,但在我纠正错误之后它就起作用了。感谢:0 – 2010-08-02 09:38:03

1

在大多数浏览器(可惜不是IE < 9)你可以使用DOMNodeRemoved事件。我不知道你的jQuery插件,但这里有一个简单的JavaScript的例子:

var iframe = document.getElementById("your_iframe"); 

document.body.addEventListener("DOMNodeRemoved", function(evt) { 
    var removedNode = evt.target; 
    if (removedNode == iframe) { 
     alert("iframe removed"); 
    } 
}, false); 

我敢肯定你会更好用的插件各地黑客得到它的时候告诉你它关闭了对话框。

相关问题