关于微前端:无界微前端作为子应用引入高德或百度地图removeChild报错问题解决

36次阅读

共计 665 个字符,预计需要花费 2 分钟才能阅读完成。

高德或者百度地图的外链 script 触发了高德地图的回调函数。回调函数里的有 document.body.removeChild 的逻辑,要删除高德的外链 script。但在 wujie 插件中配不配置置 jsIgnores,高德地图的回调函数 removeChild 都无奈删除

呈现以上问题
咱们能够应用一下办法解决:

const {bus,setupApp,preloadApp,destroyApp] = WujieVue;
preloadApp({
  name: 'vite',
  url: hostMap("vite"),
  exec: true,
  plugins:[
      {jsIgnores: [/baidu/], // [/amap\.com/]
          // _element 为真正插入的元素,_iframeWindow 为子利用的 window,rawElement 为原始插入元素
          appendOrInsertElementHook(_element: any, _iframeWindow: any, rawElement: any) {// 以下函数也能够用此行代替 _iframeWindow.document.body.removeChild=() => null
              if (rawElement) {
                  Object.defineProperty(rawElement,'parentNode', {get: () => ({removeChild: () => null })
                  })
              }
          }
      }
  ]
})

同理也能够触类旁通遇到相似的问题,都能够通过此操作来避免报错

如果下面的内容复制进页面后无奈起作用,可能是我拼写错误导致的,请仔细检查。

正文完
 0