多iframe页面控制定时器运行

本文探讨了在使用Echarts时遇到的iframe隐藏导致的NS_ERROR_FAILURE错误问题及其解决方案。通过设置定时器监测iframe的显示状态,并在页面显示时执行相关代码,确保Echarts正常工作。此外,还提供了一个通用的函数myInterval,用于根据iframe的父元素显示状态来调用指定方法,适用于需要动态控制iframe内容的情况。
摘要由CSDN通过智能技术生成

情况一:

我们在使用echarts,当echarts所在iframe的display:none时会出现NS_ERROR_FAILURE错误。

解决办法:
<div role="tabpanel" class="tab-pane active" id="idd">
                    <iframe src="" border="0" marginwidth="0" marginheight="0" scrolling-x="no" scrolling-y="auto" allowtransparency="yes" width="100%" height="100%" frameborder="no"></iframe>
                </div>

setInterval(function () {
  //判断
  if ($('#idd', window.parent.document).hasClass('active')) {
    //执行代码
  },2000);

情况二:

<div class="layui-show">
  <iframe src="" frameborder="0" class="layadmin-iframe" id="">
    #document
    <!-- 页面部分 -->
  </iframe>
</div>

获取iframe所在元素的父元素,判断标志性属性就好了。

function myInterval(func, time){
	console.log("启动定时器",func,time);
    //点击iframe对应的标签则直接执行定时器方法。不过注意,这里我默认只执行最后一个定时器方法,如果有多个定时器请自行更改。
	top.$("li[lay-id='"+$(self.frameElement).attr("src")+"']").unbind('click').click(function(){
		console.log(func,"方法调用");
		func.call();
	});
	return setInterval(function(){
		console.log("myInterval定时器调用");
		if($(self.frameElement.parentElement).hasClass("layui-show")){
            //判断所在的页面是否显示
			console.log(func,"方法调用");
			console.log("定时器间隔"+time);
			func.call();
		}
	}, time);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值