zhongshujie
2 天以前 ce70bc450a2401997bb850f89f3c4dc0a23e0a72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import Vue from "vue";
import svgIcon from "@/components/svgIcon/index.vue";
Vue.component("svg-icon", svgIcon);
 
// 修改为将SVG注入到父应用DOM
const requireContext = require.context("@/assets/icons/svg", false, /\.svg$/);
const requireAll = (requireContext) => {
  const svgSymbols = requireContext.keys().map(key => {
    return requireContext(key).default || requireContext(key);
  });
 
  // 创建SVG sprite容器
  const spriteContainer = document.createElement('div');
  spriteContainer.id = 'svg-sprite-container';
  spriteContainer.style.display = 'none';
  
  // 构建SVG sprite
  const svgSprite = `
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      ${svgSymbols.join('')}
    </svg>
  `;
  
  spriteContainer.innerHTML = svgSprite;
  
  // 关键:注入到父应用的body中
  (window.parent || window).document.body.appendChild(spriteContainer);
};
 
requireAll(requireContext);