【问题标题】:How can I know when a certain iframe gets removed from a page我如何知道某个 iframe 何时从页面中删除
【发布时间】:2011-03-24 02:56:04
【问题描述】:

假设我在 HTML 页面上有一个 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();
    }
};

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可以在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
    });
    

    【讨论】:

    • yoru 答案中有一个小错字,但在我更正后它起作用了。谢谢:0
    【解决方案2】:

    在大多数浏览器(遗憾的是不是 IE 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);
    

    我相信你最好还是使用插件来让它在关闭对话框时告诉你。

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      相关资源
      最近更新 更多