在qiankun模式下el-dropdown点击,浏览器报Failed to execute ‘getComputedStyle’ on ‘Window’: parameter 1 is not of type ‘Element’` 错误
在qiankun模式下el-dropdown点击,浏览器报Failed to execute ‘getComputedStyle’ on ‘Window’: parameter 1 is not of type ‘Element’` 错误
在qiankun 前端框架中,主应用开启了样式隔离,
跳转子应用后,el-dropdown-menu点击,浏览器报浏览器报Failed to execute ‘getComputedStyle’ on ‘Window’: parameter 1 is not of type ‘Element’` 错误。
问题描述
在qiankun 前端框架中,主应用开启了样式隔离,
跳转子应用后,el-dropdown-menu点击,浏览器报浏览器报Failed to execute ‘getComputedStyle’ on ‘Window’: parameter 1 is not of type ‘Element’` 错误:
- 主应用 ,开启了qiankuan沙箱机制,乾坤会对子应用的DOM和样式进行隔离,可能回导致el-dropdown-menu的定位和样式定位的计算;
start({sandbox: {experimentalStyleIsolation: true,strictStyleIsolation: true},prefetch: 'all'
})
-
getComputedStyle 报错,
el-dropdown-menu
在计算样式时,可能无法正确获取 DOM 元素,导致TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'
错误; -
查看单独子应用的DOM元素 ;
-
查看qiankun模式下的子应用的DOM元素 ;
没有自动的定位和样式定位的计算
解决方法
在子应用的main.js里面增加方法
// 独立运行时
if (!window.__POWERED_BY_QIANKUN__) {render();
}else{const style = document.createElement('style');style.textContent = `svg { display: inline-block; overflow: visible!important; }use { width: 100%!important; height: 100%!important; }`;document.head.appendChild(style);const rawGetComputedStyle = window.getComputedStyle;window.getComputedStyle = function (element) {try {return rawGetComputedStyle.call(window, element);} catch (e) {console.warn('getComputedStyle error:', e);return {getPropertyValue: () => '',};}}
}
重启一下子应用,完美解决