假设我在HTML页面上有一个iframe:
<iframe src="/script.php"></frame>
iframe位于模态框窗口内(我正在使用模态窗口的jQuery插件:http://opensource.steffenhollstein.de/templates/modalbox/)。
当模态框关闭时,其中的iframe将使用jQuery remove()方法从页面的HTML中删除。
我怎么能注意到iframe已被删除并执行一些javascript代码?基本上我想要的是在模态框关闭后刷新页面。这是模态框插件的close方法:
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();
}
};
答案 0 :(得分: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
});
答案 1 :(得分:1)
在大多数浏览器中(遗憾的是IE&lt; 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);
我确信你最好不要使用插件来告诉你它何时关闭对话框。