如何知道何时从页面中删除某个iframe

时间:2010-08-02 09:21:59

标签: javascript jquery

假设我在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();
    }
};

2 个答案:

答案 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);

我确信你最好不要使用插件来告诉你它何时关闭对话框。