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