请教一个问题。关于在ie浏览器下的定时器每次执行以后会需要更多的时间来执行的问题?
发布于 6 年前 作者 CokeWithIce 3564 次浏览 来自 问答

问题图片.png

如图所示。我次项目的是添加了一个定时器。在ie(全本版本)浏览器上使用以后会穿线一个问题就是每次执行以后下次执行会比上次执行时间更长。 耗时更多的部分就是黑线圈起来的部分。(计时器部分) 下面是代码 Iframe.prototype.init=function(){ var self=this; this.seamless=$(this.element).attr(“seamless”); if(this.element.src.indexOf("%7B")!="-1"){ return false; } if(typeof(this.seamless)!=“undefined”){ var intervalTime=400; try{ window.clearInterval(this.timer); }catch(e){} this.timer=setInterval(function(){self.update()},intervalTime); return ; } Iframe.prototype.update=function(intervalTime){ if(this.element.contentWindow.document.body!=null){ $(this.element).contents().find(“body”).css(“height”,“auto”); $(this.element).contents().find(“html”).css(“height”,“auto”); var scrollHeightForBody; if($(this.element).contents().find("#body").length==1){ scrollHeightForBody=$(this.element).contents().find("#body").height(); }else{ scrollHeightForBody=$(this.element).contents().find(“body”).height(); } $(this.element).css(“height”,scrollHeightForBody+“px”) }

}
init方法和update方法都是执行的。但是这个定时器问题就是没法解决。希望能有高手来帮我下。多谢了。现在我最希望知道的是成因。。。
4 回复

没有人来回答,看来大家都是高手不屑于回答这个问题。也可能这是node网站对纯js不太友好。但是我自己也找到原因了,也许以后还有小伙伴会有这样的问题。我就把答案写在这里了,原因很简单。就是jq问题。 定时器尽量不要用jq等框架! 定时器尽量不要用jq等框架! 定时器尽量不要用jq等框架! 重要的事情说三遍。 我在定时器里使用find方法。 就是这个find方法的锅。 我是电 我是光 我是唯一的神话。 无语了,这问题。果然人越来越回去。。。

既然是定时器,那么可以把 find()结果缓存起来不用每次求值啊

错别字少点,排版好点(学会 markdown 排版代码),问题描述清楚好点。

代码排版有点乱,没细看,不过跟 jq 应该没啥关系,一方面定时器本来就不是精确的,然后如果你如果有一些比较重的操作,自然会延迟。

@atian25 收到了。看来排版一直是问题=。=

回到顶部