解决iframe实时获取资源页面显示空白的问题

简介: 解决iframe实时获取资源页面显示空白的问题

1、问题起源

  在使用公司平台开发的时候,内部窗口使用的是iframe,iframe内部的内容是通过定时器一分钟一次获取最新的数据渲染在页面上。

  以上看起来是没有什么问题,但是会造成用户体验问题:

  • 当用户打开其他页面后,超过一分钟后,定时器已经调用了一次,但是用户在返回到那个页面,iframe的内容是一个空白的白板。使用F12在浏览器的开发者模式里面,DOM结构里面的innerHtml是有内容的,但是不知道为什么没有显示出来。我也很懵逼!

2、解决方式

  • (1)判断用户是否还在平台页面
  • (2)获取iframe内部展示信息的DOM元素的信息
  • (3)实时检测该元素的宽高来判断数据信息是否渲染出来了
  • (4)通过定时器来判断元素的宽高,如果为0,则重新加载一次方法渲染页面
  • (5)用户离开平台页面后清除定时器

3、代码实现

// 判断该页面在浏览器是否可见,获取可见状态
// document.visibilityState: 只读属性,它的值是 visible,hidden,prerender 或者 unloaded 之一。
// 如果网页可见会返回 visible,隐藏则返回 hidden。
let page_state = document.visibilityState;
let timer_yxh = null;
let o_yxh = document.getElementById('tableList');
if (page_state == 'visible') {
  // 当页面可见的时候开启定时器,监控iframe资源是否加载出来,
  // 在这里通过元素的宽高来判断,内容是否加载出来
  timer_yxh = setInterval(() => {
    // 只能通过行内样式才能获取到。获取到的元素宽高不包括padding和border
    // console.log('div 宽高', o_yxh.style.width, o_yxh.style.height) 
    // 元素的宽度包含padding不包含border
    console.log('client 宽高', o_yxh.clientWidth, o_yxh.clientHeight)
    // console.log('scroll 宽高', o_yxh.scrollWidth, o_yxh.scrollHeight)
    // 元素的宽度包含padding和border
    // console.log('offset 宽高', o_yxh.offsetWidth, o_yxh.offsetHeight)
    console.log('=====================================================')
    // 在定时器内部实时获取元素的宽度,在外部获取可能会造成数据不准确
    var client_W = o_yxh.clientWidth;
    // 如果元素宽度为0,则说明该iframe的内容没有显示出来
    if (client_W === 0) {
      // console.log("调用了方法,重新渲染页面dom结构和inner HTML内容")
      // 渲染数据的方法
      testFunction();
    }
  }, 3000)
} else {
  // 如果页面不可见将清除定时器
  clearInterval(timer_yxh)
}

结语

   以上方法是我解决问题的方法,如需借鉴,请作为参考;因为可能场景不一样,可能会不生效。可能我还是太菜了,如果有更好的方法,请各位大佬评论留言,不吝赐教,谢谢!

相关文章
|
6月前
echarts插件-从后台请求的数据在页面显示空白的问题
echarts插件-从后台请求的数据在页面显示空白的问题
48 0
|
7月前
|
移动开发 JavaScript
同样的JS效果,有部分页面生效,有部分页面无效的原因(怪异模式)
同样的JS效果,有部分页面生效,有部分页面无效的原因(怪异模式)
31 0
|
监控
监控页面滑到底部加载事件的jq
监控页面滑到底部加载事件的jq
56 0
|
前端开发 JavaScript
JavaScript缓慢滚动到页面顶部——电梯导航栏fixed定位
当页面内容过多时,浏览网页时滚动距离会变大,当你想回看上面的内容时,需要用鼠标滚轮或拉动滚动条来移动回去。这时如果网页设置电梯导航栏会提高网页阅读的方便性和高效性,我们只需要操作电梯导航栏上面的功能,就能去想要的模块,比如点击返回顶部按钮后会调转到页面顶部。
304 0
JavaScript缓慢滚动到页面顶部——电梯导航栏fixed定位
|
前端开发 JavaScript
前端:侧边固定导航栏jQuery实现定位
前端:侧边固定导航栏jQuery实现定位
223 0
|
JavaScript
网页切出当前标签页时更改标题状态
网页切出当前标签页时更改标题状态
119 0
|
编解码
根据用户浏览页面的设备和屏幕的分辨率,在页面上显示不同的页面和不同大小的图片
根据用户浏览页面的设备和屏幕的分辨率,在页面上显示不同的页面和不同大小的图片
109 0
根据用户浏览页面的设备和屏幕的分辨率,在页面上显示不同的页面和不同大小的图片
|
搜索推荐 UED 索引
单页面是什么呢?单页面怎么优化
单页面是什么 单页面就是一种布局很简单的静态页面,在互联网早期,大多数网站都是以单页面的形式存在的。但是那时候大多数站长对单页面网站的重视度不够,且很少有人去专门做单页网站。 基本都是做一个多页的网站,整体性的来做SEO,用整体性的网站提升单页面权重和PR值,以实现推广目的。后来随着互联网的发展,单页网站逐渐消失在人们的视野中。 然而,单页面的网站有时候也能达到多页面的网站所达不到的效果,比如说利于集中权重、利于增加网站相关性、更容易被抓取,随着最近淘宝客等形式的净收益的出现,单页面以其简单的氛围优势,再次出现在人们的眼中。
182 0
|
前端开发 JavaScript
将div固定在页面最下面、将百度搜索框嵌入页面
版权声明:转载请注明作者及出处,否则将追究法律责任。 https://blog.csdn.net/q2158798/article/details/79310233 1.
1656 0