需求
需要让iframe子窗体在页面显示出的内容不被遮盖且没有滚轴,能够完整的显示出来。
实现
window.onload = function () {
//1.获取子窗体
var iframes = document.getElementsByClassName("formIframe");
for (let i = 0; i < iframes.length; i++) {
var iframeWindow = iframes[i].contentWindow;
var iframeDocEle = iframeWindow.document.documentElement
//2.根据子窗体的滚轴长宽并动态改变子窗体的长宽
var iframeWidth, iframeHeight;
iframeWidth = iframeDocEle.scrollWidth;
iframeHeight = iframeDocEle.scrollHeight;
iframes[i].width = iframeWidth;
iframes[i].height = iframeHeight;
//2.监听子窗体的的滚轴长度
// 选择将观察突变的节点
var targetNode = iframeDocEle;
//3.监听后续子窗体内容的动态变化并在动态的随着更改子窗体的大小
// 3.1观察者的选项(要观察哪些突变)
var config = {attributes: true, childList: true, subtree: true};
// 3.2当观察到突变时执行的回调函数
var callback = function (mutationsList) {
var iframeWidth, iframeHeight;
iframeWidth = iframeDocEle.scrollWidth;
iframeHeight = iframeDocEle.scrollHeight;
iframes[i].width = iframeWidth;
iframes[i].height = iframeHeight;
};
//3.3 创建一个链接到回调函数的观察者实例
var observer = new MutationObserver(callback);
// 3.4开始观察已配置突变的目标节点
observer.observe(targetNode, config);
}
}