美文网首页程序员
js监听div下的iframe标签

js监听div下的iframe标签

作者: 陈彬大魔王 | 来源:发表于2020-05-19 15:13 被阅读0次

这里只是抛砖引玉,简单的使用了 MutationObserver 有兴趣的可以深入研究,还有很多可拓展的地方

html
<div class="a">
  <iframe class="b" src="http://baidu.laosiji.com" frameborder="0"></iframe>
</div>
css
 .a {width: 500px;height: 500px;background: blue;}
 .b {width: 50%; height: 50%;}
js

这里引用了jQuery

let a = $('.c'),b = $('.d');
//点击div使iframe消失
a.on('click', function (e) {
    setTimeout(() => {
        b.remove()
    }, 2 * 1000);
})
//调用监听方法,该方法可以抽离成一个单独的js
observe(a[0],callback,'IFRAME');
function callback(){
    console.log('6666')
}
/**
 * 监听元素下子元素的移除
 * @param {*} targetNode 要监听的元素,例如$('.a')[0]
 * @param {*} func 要执行的方法
 * @param {*} childAttrVal 子节点的nodeName值,例如:IFRAME
 */
function observe(targetNode, func, childAttrVal) {
    if (!func || typeof func != 'function') return new Error('func must be function');
    const mutationObserver = new MutationObserver(callback);
    mutationObserver.observe(targetNode, {
        childList: true
    });
    function callback(mutations) {
        for (let mutation of mutations) {
            let type = mutation.type;
            switch (type) {
                case "childList":
                    // console.log("A child node has been added or removed.");
                    //remove
                    if (mutation.removedNodes.length > 0) {
                        // console.log("A child node has been removed.", mutation.removedNodes);
                        checkout(mutation.removedNodes)
                    }
                    break;
                default:
                    break;
            }
        } 
    }
    function checkout(nodeArr) {
        f: for (let node of nodeArr) {
            if (node['nodeName'] && node['nodeName'] === childAttrVal) {
                func()
                break f;
            }
        }
    }
}

或者你还有更好的方法,可以留言讨论一波

相关文章

  • js监听div下的iframe标签

    这里只是抛砖引玉,简单的使用了 MutationObserver 有兴趣的可以深入研究,还有很多可拓展的地方 ht...

  • 回车 enter 键盘监听

    JS监听某个输入框 S监听某个DIV区域 JS监听body区域

  • iframe左右布局

    去掉ol、iframe标签外层的div,就是上下布局

  • mousemove遇到iframe丢失监听绑定的document

    最近在写一个可拖动div边框改变宽度的功能, div内嵌iframe,当鼠标mousemove监听到div边界时,...

  • 实现简单的拖动

    拖动div实现 标签(空格分隔): js js 实现 2.jQuery 实现

  • 自己用js写的一个tab卡

    整体思想:元素上加onclick()监听,js设置div的style来控制显示与否 记得加上js控制:

  • 2019-04-27

    html知识加强总结3 四搜效果显示 框架标签(已经过时 用div加iframe代替) 登录页面 框架标签主页 t...

  • iframe高度自适应

    为了让iframe的高度对内容自适应,给iframe标签设置一个onload事件,具体代码如下: js代码...

  • HTML常用标签难点

    1.iframe标签 页面嵌套标签。默认情况下,iframe标签的高度是50,宽度为100,是一个可替换的标签。难...

  • JS移动、旋转div

    实现效果 JS叠加、移动、旋转div 实现方式对比 1、添加div2、通过rotate插件实现旋转3、通过键盘监听...

网友评论

    本文标题:js监听div下的iframe标签

    本文链接:https://www.haomeiwen.com/subject/fgdbohtx.html