情况一:
我们在使用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);
}