iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue中使用iframe嵌入网页,页面可自适应问题
  • 313
分享到

vue中使用iframe嵌入网页,页面可自适应问题

2024-04-02 19:04:59 313人浏览 八月长安
摘要

目录使用iframe嵌入网页,页面可自适应Vue iframe高度自适应 实用实时刷新iframe高度变化iframe高度有变的时候通知父级iframe高度有变的时候直接修改ifra

使用iframe嵌入网页,页面可自适应

项目中遇到要嵌入第三方网页的需求,因为没有同第三方页面交互的需求,只需展示即可,所以最终决定使用 iframe 将第三方的网页嵌入到系统中,并且做到自适应效果。

考虑到以后可能会增加嵌入页面的数量,故而封装成组件,供以后复用:

上图为系统整体结构图,需要在内容区内展示 iframe 的内容,并且做到自适应。

整体代码如下:

<template>
  <div class="iframe-container">
    <iframe id="iframeContainer" :src="iframeUrl" frameborder="0" />
  </div>
</template>
 

<script>
import { mapGetters } from 'vuex'
 
export default {
  name: 'IframeContainer',
  props: {
    iframeUrl: {
      type: String,
      default: ''
    }
  },
  data() {
    return {}
  },
  computed: {
    ...mapGetters([
      'sidebar'
    ])
  },
  watch: {
    'sidebar.opened': {
      handler: function() {
        this.initIframe()
      },
      immediate: true
    }
  },
  mounted() {
    this.initIframe()
 
    window.onresize = () => {
      this.initIframe()
    }
  },
  methods: {
    initIframe() {
      const iframeContainer = document.getElementById('iframeContainer')
      const deviceWidth = document.body.clientWidth
      const deviceHeight = document.body.clientHeight
      iframeContainer.style.width = this.sidebar.opened ? (Number(deviceWidth) - 293) + 'px' : (Number(deviceWidth) - 71) + 'px'
      iframeContainer.style.height = (Number(deviceHeight) - 110) + 'px'
    }
  }
}
</script>
 

<style lang="sCSS" scoped>
  .iframe-container {
    width: 100%;
    height: 100%;
  }
</style>

要确保嵌入的页面做到自适应的效果,首先保证 iframe 是自适应的,此处关键代码:

动态计算 iframe 的宽度和高度,计算时需要减去侧边栏宽度、内容区 padding、顶部导航高度等。

监听窗口大小改变事件,触发 iframe 宽度高度计算方法,重新为 iframe 设置宽度和高度:

 如果系统侧边栏或者顶部导航是可收缩的,还需监听收缩事件,进而改变 iframe 高度和宽度:

此处监听 sidebar 的展开状态,在此不做过多赘述。

vue iframe高度自适应 实用

iframe是vue的,在使用过程中高度根据数据实时变化,不好设置iframe的高度值。试了多种方式之后,总结了几种自适应的方式。

实时刷新iframe高度变化

var iframes = document.getElementsByTagName('iframe');
setInterval(function() {
    for (var i = 0, j = iframes.length; i < j; ++i) {         
        iframes[i].setAttribute('height', iframes[i].contentWindow.document.body.scrollHeight);
    }
}, 1000);

iframe高度有变的时候通知父级

// iframe
this.$nextTick(()=>{
  parent.window.iframeChangeHeight()
})
// 父级
function iframeChangeHeight(){
 var iframes = document.getElementsByTagName('iframe');
 for (var i = 0, j = iframes.length; i < j; ++i) {
    iframes[i].setAttribute('height', iframes[i].contentWindow.document.body.scrollHeight);
 }
}

iframe高度有变的时候直接修改iframe高度

function iframeChangeHeight(){
  let iframes = window.parent.document.getElementsByTagName('iframe');
  for (var i = 0, j = iframes.length; i < j; ++i) {
    iframes[i].setAttribute('height', iframes[i].contentWindow.document.body.scrollHeight)
  }
},

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue中使用iframe嵌入网页,页面可自适应问题

本文链接: https://www.lsjlt.com/news/167366.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue中使用iframe嵌入网页,页面可自适应问题
    目录使用iframe嵌入网页,页面可自适应vue iframe高度自适应 实用实时刷新iframe高度变化iframe高度有变的时候通知父级iframe高度有变的时候直接修改ifra...
    99+
    2024-04-02
  • iframe内嵌页面自适应的方法有哪些
    有以下几种方法可以实现iframe内嵌页面自适应:1. 使用CSS的百分比值:可以通过设置iframe的宽度和高度为百分比值来实现自...
    99+
    2023-08-11
    iframe
  • 网页设计中如何解决iframe自适应高度的问题
    小编给大家分享一下网页设计中如何解决iframe自适应高度的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!可能有人还没接触到这个问题过,先说明一下,什么是自适...
    99+
    2023-06-08
  • HTML中怎么使用iframe在当前网页中嵌入其他网页
    本文小编为大家详细介绍“HTML中怎么使用iframe在当前网页中嵌入其他网页”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML中怎么使用iframe在当前网页中嵌入其他网页”文章能帮助大家解决疑惑,...
    99+
    2024-04-02
  • vue中内嵌iframe的src更新页面未刷新问题及解决
    目录vue中内嵌iframe的src更新页面未刷新原因解决iframe的src指向的内容不刷新的解决方法之一总结vue中内嵌iframe的src更新页面未刷新 vue中,系统使用if...
    99+
    2022-12-09
    vue内嵌iframe iframe的src更新页面 src更新页面未刷新
  • html5中怎么解决外链嵌入页面通信问题
    这篇文章给大家分享的是有关html5中怎么解决外链嵌入页面通信问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用postMessage推送和window.addEventListener接收原理:发送方使用p...
    99+
    2023-06-09
  • 怎么在CSS3 中使用@media 实现网页自适应
    这期内容当中小编将会给大家带来有关怎么在CSS3 中使用@media 实现网页自适应,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、CSS2 中的@mediacss2里面虽然支持@media属性,但是能...
    99+
    2023-06-08
  • 使用Flex怎么实现一个自适应页面
    使用Flex怎么实现一个自适应页面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Flex布局简介Flex英文为flexiable box,翻译为弹性盒子,Fle...
    99+
    2023-06-08
  • 如何解决layer弹出层自适应页面大小的问题
    这篇文章主要介绍了如何解决layer弹出层自适应页面大小的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。网上的解决方案大都是以下几种:1...
    99+
    2024-04-02
  • 小程序使用webview内嵌h5页面wx.miniProgram.getEnv失效问题
    目录背景实现思路问题解决背景 最近接到一个h5需求,和普通的h5不一样,这个h5页面是嵌入到小程序中使用的,需求简单来说就是展示一个跳转按钮,判断如果是小程序环境下就进行跳转到其他小...
    99+
    2023-05-16
    小程序 wx.miniProgram.getEnv失效 小程序 wx.miniProgram.getEnv
  • layer.open的自适应及居中及子页面标题如何修改
    这篇文章主要为大家展示了“layer.open的自适应及居中及子页面标题如何修改”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“layer.open的自适应及居中...
    99+
    2024-04-02
  • vue使用echarts图表自适应问题怎么解决
    在Vue中使用ECharts图表时,可以通过监听窗口大小变化,动态调整图表的大小以实现自适应。具体步骤如下: 在Vue组件中引入E...
    99+
    2024-03-08
    vue echarts
  • JavaScript在网页设计中的嵌入应用方法是什么
    本篇内容主要讲解“JavaScript在网页设计中的嵌入应用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript在网页设计中的嵌入应用方法是什么”吧!---- JavaS...
    99+
    2023-06-03
  • React中使用window.print()出现页面无响应问题怎么办
    这篇文章主要介绍了React中使用window.print()出现页面无响应问题怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、问题背景:window.print()...
    99+
    2023-06-25
  • 关于React中使用window.print()出现页面无响应问题解决记录
    目录一、问题背景:二、问题原因: 三、问题解决:总结:一、问题背景: window.print()页面打印出现页面无响应 看了网上很多办法都是让用window.locat...
    99+
    2024-04-02
  • 在不使用ssr的情况下如何解决Vue单页面SEO问题
    这篇文章主要介绍在不使用ssr的情况下如何解决Vue单页面SEO问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!遇到的问题:近来在写个人博客的时候遇到了大家可能都会遇到的问题Vue...
    99+
    2024-04-02
  • 在不使用ssr的情况下怎么解决Vue单页面SEO问题
    小编给大家分享一下在不使用ssr的情况下怎么解决Vue单页面SEO问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!只是用php...
    99+
    2024-04-02
  • 使整个页面内容居中使高度适应内容自动伸缩的方法教程
    本篇内容介绍了“使整个页面内容居中使高度适应内容自动伸缩的方法教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先先按这里看实际运行效果,...
    99+
    2023-06-08
  • 多页面应用程序中Vue.js首屏慢的问题怎么解决
    这篇文章主要讲解了“多页面应用程序中Vue.js首屏慢的问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“多页面应用程序中Vue.js首屏慢的问题怎么解决”吧!问题原因在多页面应用程...
    99+
    2023-07-06
  • 用asp自动解析网页中的图片地址284475问题及解决
    一,取得原页中的图片的地址。 <%function PicStr(str) Set objRegExp = New Regexp '设置配置对象 objR...
    99+
    2023-05-20
    用asp自动解析网页中的图片地址
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作