vue项目中修改iframe嵌入的css样式

需求:

使用iframe嵌入一个外部链接,并修改该页面中的css样式。

参考文章:在Vue中优雅的更改iframe嵌入页面的样式

实现逻辑:

若要实现能够修改iframe中嵌入页面的样式,首先要保证嵌入的链接和当前页面是同域的,若不是,需要先做跨域配置,具体可参考我的另一篇文章:vue跨域实现:proxy配置

这篇文章主要讲述对iframe中css样式的修改:

页面结构代码:

<iframe
        id="iframeId"
        :src="iframeUrl"
        width="100%"
        height="100%"
        frameborder="0"
        @load="loadFrame"
      />

主要方法:

methods: {
    // iframe加载完成后的回调函数
    loadFrameFn() {
      const iframe = document.getElementById("iframeId");
      const body = iframe.contentWindow.document.body;
      const cssLink = document.createElement("link");
      cssLink.href = "/vue项目名称/iframe-css/iframe.css";
      cssLink.rel = "stylesheet";
      cssLink.type = "text/css";
      body.appendChild(cssLink);
    },
  },

 其中iframe.css为自己创建的css文件,内容为我们想要实现的css样式,该文件需要放置在静态资源文件中。我在public文件中创建了一个iframe-css文件夹,用来放置该文件