iframe 标签(用于嵌套网页)及loading加载动画效果

这篇具有很好参考价值的文章主要介绍了iframe 标签(用于嵌套网页)及loading加载动画效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 什么是 iframe 

        1. iframe 是 HTML元素,用于在网页中内嵌另外一个网页.

        2. iframe 默认有一个宽高,存在边界.

        3. iframe 是一个行内块级元素,可以通过 display 修改.

二. iframe 元素属性

        1. src : 指定内联网页的地址

        2. frameborder : iframe 默认有个边界,可以设置frameborder 为 0 清除边界.

        3. width , height : 控制 iframe 的宽高.

        4. name : 框架的名称.

        5. srcolling : 是否可以滚动, yes,no,auto

iframe标签,前端开发,框架,前端,javascript,html

三. iframe 相互操作

        1. 首先明确一点,每个 iframe 里各自维护自己的全局window对象.

        2. 另外,只有同域才能进行 iframe 之间的读写改,跨域时,只能进行简单的路由跳转.

        3, 在父级使用window.frames[name]可以获得子级 iframe 的window对象,相应的可以获取 document 对象,从而对子级 iframe 进行 dom操作.

        4. 在子级 iframe 想要操作父元素的 iframe ,直接使用子元素的window.parent来获取父级元素的window对象,从而获取document来操作dom.

四. iframe 之间的通信

        1. 发送信息

        当我们要向指定 iframe 发送信息时,首先要获取该 iframe 自己的window对象,让后使用该window对象的postMessage发送消息.

        2. 接受信息

        在要接收信息的地方,我们使用window的onmessage事件来接收信息,改事件会返回一个事件对象,其中data包含了返回的数据,orgin返回发送源.

        3. 安全问题

        当我们明确知道orgin是谁时,不要使用 ' * ' ,当要接收信息时,先判断orgin是否是我们要接收的源,在做后续操作.

五. 优点/缺点

        优点 : 

        解决加载缓慢的第三方内容如: 图标和广告的加载问题.

        能并行加载脚本.

        方便管理,指的是如果有多个页面需要用到 iframe 的内容,那么只要修改 iframe 的内容就可以          实现统一管理.

        iframe 可以原封不动的把嵌入的网页显示出来.

        缺点 :

        会产生很多的页面,不容易管理.

        会增加服务器的http请求,对大型网址不可取.

        会阻塞父页面的load事件.

        iframe 和 主页面共享连接池,而浏览器对相同域的连接有限时,所以会影响页面的并行加载,也          就是说子文档和父文档的请求数会计算在一起.

        不利于搜索引擎优化,也就是不利于SEO.

        解决办法: 如果需要使用 iframe ,最好是通过JavaScript动态给 iframe 添加src属性,这样就可以绕开以上两个问题.

六. 注意事项

        1. 获取子元素的document时要确保子元素所有的dom元素已经挂载完毕,因此在原生的写法时,必须写在window的onLoad事件中.

实例:

我的这个项目中只有一个地方使用了 iframe,简单介绍一下

iframe标签,前端开发,框架,前端,javascript,html

 点击左侧的 展厅大屏 之后显示的效果

iframe标签,前端开发,框架,前端,javascript,html

 对于这种需求我们需要配置好 展示大屏 页面的路由地址

iframe标签,前端开发,框架,前端,javascript,html

 完整代码: 

<template>
<!-- iframe(HTML标签,用于在网页中嵌套另外一个网页) -->
  <iframe
    src="/bigscreen/index"
    frameborder="0"
    width="3385"
    height="1372"
    scrolling="no"
    :style="'transform-origin: 0px 0px;transform: scaleX(' + scaleX + ') scaleY(' + scaleY + ');'"
  ></iframe>
</template>

<script>
export default {
  name: 'IframeBigScreenView',
  data() {
    return {
      scaleX: document.body.clientWidth / 3385,
      scaleY: document.body.clientHeight / 1372,
    }
  },
  mounted() {
    window.onresize = () => {
      return (() => {
        this.scaleX = document.body.clientWidth / 3385
        this.scaleY = document.body.clientHeight / 1372
      })()
    }
    document.title = '智慧党建城市运行中心'
    document.body.style = 'overflow:hidden;background: #050a2a;'
  },
  destroyed() {
    // 离开页面生命周期函数
    document.body.style = ''
  },
  created() {
    window.handleJumpTo = function (url) {
      // this.$router.push('/8a50e37f0d4e29b90280df77adf1f387')
      window.location.href = url
    }
  },
  methods: {},
}
</script>

<style>
</style>

另一种:

iframe标签,前端开发,框架,前端,javascript,html

 完整代码(可以实现自适应):

<template>
    <div class="app-container">
        <iframe :src="src" ></iframe>
    </div>
</template>

<script setup name="resource">

const src = ref('http://grxxxxxxxx3000/d/9CWBz0bik/lxxxxxxxxxx?orgId=1');

</script>

<style scoped lang="scss">
    html,body,iframe{
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
    iframe{
        border: none;
    }
</style>

给 iframe 添加loading加载效果:

iframe标签,前端开发,框架,前端,javascript,html

 loading的加载样式可以自定义去 element官网查看.

首先给 iframe 标签外层嵌套一个div,loading添加到外层的div上.

通过  attachEvent 来判断 iframe 是否加载完成.

完整代码:

<template>
    <div class="app-container">
        <div
             v-loading="loadingIframe"
             element-loading-text="拼命加载中..."
             style="width: 100%;height: 100%;overflow: hidden;"
        >
            <iframe class="ifra" :src="src" ></iframe>
        </div>
    </div>
</template>

<script setup name="resource">

import {onMounted} from "vue";
import { getCurrentInstance } from 'vue'

const src = ref('http://grafana.huhehe.cn:3000/d/9CWBz0bik/linuxxi-tong-jian-kong?orgId=1');
const loadingIframe = ref(true);
const { proxy } = getCurrentInstance()

onMounted(() => {
    iframeLoad();
});

function iframeLoad() {
    proxy.$nextTick(() => {
        const iframe = document.querySelector('.ifra');
        //attachEvent: 处理兼容性问题
        if (iframe.attachEvent) {//兼容IE
            iframe.attachEvent("onload", function () {
                // 加载完成
                loadingIframe.value = false;
            });
        } else {
            iframe.onload = function () {
                // 加载完成
                loadingIframe.value = false;
            };
        }
    });
}


</script>

<style scoped lang="scss">
    html,body,iframe{
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
    iframe{
        border: none;
    }
</style>

     文章来源地址https://www.toymoban.com/news/detail-755971.html

到了这里,关于iframe 标签(用于嵌套网页)及loading加载动画效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • vue element-ui Loading加载事件的使用以及自定义Loading加载动画

     elemen-ui官方使用 loading加载事件属性解释 element-loading-text 在绑定了 v-loading 指令的元素上添加 element-loading-text 属性,其值会被渲染为加载文案,并显示在加载图标的下方 element-loading-spinner 和 element-loading-background 属性分别用来设定图标类名和背景色值。 作为小白,这次主要

    2024年02月11日
    浏览(16)
  • 为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程

    为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程

    为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程 效果图 : 教程开始 新建一个loading样式css 将以下代码放进去 然后引用这个文件 code #Loadanimation{    background-color:#fff;    height:100%;    width:100%;    position:fixed;    z-index:1;    margin-top:0px;top:0px;     } #Loadanimation

    2024年02月09日
    浏览(11)
  • 前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求

    前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求

    前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13219 效果图如下: 实现代码如下: 使用方法 HTML代码实现部分 组件实现代码

    2024年02月11日
    浏览(17)
  • vant的Loading加载动画组件的使用,通过接口拿数据时显示加载状态

    挂载到App.vue中之后所有的接口请求都会加载loading组件 可以在需要的页面单独引用 在封装好的axios中,利用axios的拦截器实现请求时提交store显示loading; 请求失败或者完成提交store隐藏loading。

    2024年02月16日
    浏览(10)
  • 【CSS加载动画特效】28种纯CSS实现的加载loading动态特效(附源码)

    【CSS加载动画特效】28种纯CSS实现的加载loading动态特效(附源码)

    今天其实还是有点期待6月份城市赛道的成绩公布,但是可能因为出现城市太多等问题,官方也还在快马加鞭的统计中,我也趁机再发一篇前端的文章了,其实在很多系统里面我们都看到过各种各样的加载中样式,但是总有些显得平平无奇,今天我就统计了28种load加载动画特效

    2024年02月15日
    浏览(13)
  • 网页全屏html视频动画效果

    全屏HTML视频动画效果通常使用HTML5的 video 标签和CSS样式来实现。PHP主要用于服务器端处理,如生成动态内容或与数据库交互,而不是直接用于创建全屏视频动画效果。 以下是一个简单的示例,演示如何使用HTML和CSS创建一个全屏视频动画效果: html复制代码 !DOCTYPE html html he

    2024年01月20日
    浏览(11)
  • 文本自动输入/删除的加载动画效果

    文本自动输入/删除的加载动画效果

    绕矩形四周跑的光柱动画实现 animation 属性的 steps 属性值运用 要实现光柱绕着矩形跑的效果,我们可以让四个光柱这样布局,然后使用动画和动画延迟属性来让光柱进行动画执行。 完整代码下载

    2024年02月07日
    浏览(10)
  • CSS3实现动画加载效果

    CSS3实现动画加载效果

    2024年02月07日
    浏览(52)
  • 【动画进阶】有意思的网格下落渐次加载效果

    【动画进阶】有意思的网格下落渐次加载效果

    最近,群友贴了一个非常有意思的动画效果,整体动画效果如下: 点击某个按钮后,触发一个动画效果,原本的网格内容,将按顺序(又带点随机的效果)从高处下落进行加载填充动画。 当然,我个人认为这个动画有点华而不实,主要体现在这个动画一次需要耗费较长时间

    2024年02月16日
    浏览(11)
  • 踩坑vue中嵌套iframe项目,嵌套在iframe中的项目无法登录!

    踩坑vue中嵌套iframe项目,嵌套在iframe中的项目无法登录!

    解决方案原文 这个我试了下是谷歌浏览器做了限制,在edge上可以正常登录 我遇到这种情况主要是我的项目用的是cookie存储的登录状态。需要设置cookie的域名,使其在嵌入的网站和网站域名下都能访问cookie,但是我设置了还是没用。 我最终的 解决方式 是将cookie存储状态改成

    2023年04月26日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包