Javascript 为什么在这段代码中,我们在固定位置iframe而不是实际div上侦听resize事件

Javascript 为什么在这段代码中,我们在固定位置iframe而不是实际div上侦听resize事件,javascript,resize,Javascript,Resize,我以前从未见过这种方法->所以我很好奇它是否真的提供了速度优势 在此处找到代码:https://github.com/chartjs/Chart.js/blob/master/dist/Chart.js 所以,作者似乎注入了一个iframe,它的位置和大小与父元素完全相同,并侦听iframe上的resize事件,而不是实际的元素。问题-为什么 helpers.addResizeListener = function(node, callback) { // Hide an iframe

我以前从未见过这种方法->所以我很好奇它是否真的提供了速度优势

在此处找到代码:https://github.com/chartjs/Chart.js/blob/master/dist/Chart.js 所以,作者似乎注入了一个iframe,它的位置和大小与父元素完全相同,并侦听iframe上的resize事件,而不是实际的元素。问题-为什么

helpers.addResizeListener = function(node, callback) {
    // Hide an iframe before the node
    var hiddenIframe = document.createElement('iframe');
    var hiddenIframeClass = 'chartjs-hidden-iframe';

    if (hiddenIframe.classlist) {
        // can use classlist
        hiddenIframe.classlist.add(hiddenIframeClass);
    } else {
        hiddenIframe.setAttribute('class', hiddenIframeClass);
    }

    // Set the style
    hiddenIframe.style.width = '100%';
    hiddenIframe.style.display = 'block';
    hiddenIframe.style.border = 0;
    hiddenIframe.style.height = 0;
    hiddenIframe.style.margin = 0;
    hiddenIframe.style.position = 'absolute';
    hiddenIframe.style.left = 0;
    hiddenIframe.style.right = 0;
    hiddenIframe.style.top = 0;
    hiddenIframe.style.bottom = 0;

    // Insert the iframe so that contentWindow is available
    node.insertBefore(hiddenIframe, node.firstChild);

    (hiddenIframe.contentWindow || hiddenIframe).onresize = function() {
        if (callback) {
            callback();
        }
    };
};

呃。。。框架是绝对定位的,因此必须调整框架的大小。你期待什么?:)如果我正在创建一个函数,将某些内容插入页面,并希望处理调整大小事件,那么我也会将它们分配给我刚刚创建的内容。据您所知,“大小和定位”样式可能会在以后更改,并且调整父对象的大小可能不是合适的触发器。在我看来,这显然是更好的方法。呃。。。框架是绝对定位的,因此必须调整框架的大小。你期待什么?:)如果我正在创建一个函数,将某些内容插入页面,并希望处理调整大小事件,那么我也会将它们分配给我刚刚创建的内容。据您所知,“大小和定位”样式可能会在以后更改,并且调整父对象的大小可能不是合适的触发器。在我看来,这显然是更好的方法。