gpt4 book ai didi

javascript - 为什么 hoverintent 函数使用这么多 CPU?

转载 作者:行者123 更新时间:2023-11-29 15:42:32 25 4
gpt4 key购买 nike

我已经实现了以下插件:

jQuery.event.special.hoverintent = {
pxDelta: 7,
pxRate: 100,
bindType: "mouseover",
delegateType: "mouseover",
handle: function( event ) {
var args = Array.prototype.slice.call( arguments, 0 ),
target = jQuery( event.target ),
cfg = jQuery.event.special.hoverintent,
cX, cY, pX, pY, timer;

function clear() {
target
.off("mousemove", getpx )
.off("mouseout", clear );
clearTimeout( timer );
}
function getpx( e ) {
cX = e.pageX;
cY = e.pageY;
}
target
.on( "mousemove", getpx )
.on( "mouseout", clear );

(function hovercheck() {
if ( ( Math.abs( pX - cX ) + Math.abs( pY - cY ) ) < cfg.pxDelta) {
clear();
// Normally we'd need to reset this but it is async
event.type = "hoverintent";
return event.handleObj.handler.apply( event.target, args );
}
pX = cX;
pY = cY;
timer = setTimeout( hovercheck, cfg.pxRate );
})();
}
};

我是这样调用它的:

$("#mainnav").find("ul.tabs > li > a").on("hoverintent", function(){ //... }

这是 (Google Chrome Dev Tool) 配置文件的打印屏幕,您可能会注意到函数 hovercheck 使用的数量:

enter image description here

  • 为什么 hovercheck 函数占用这么多 CPU?
  • 如何改进此功能?

更新:Internet Explorer 8(仅限 Windows XP)崩溃

在不同的浏览器中进行测试后,我还注意到 Internet Explorer 8 (Windows XP) 在触发 hoverintent 事件后立即崩溃。这是 (Internet Explorer) 配置文件的另一个打印屏幕。 (有趣的部分可能是 querySelectAll() DOM 函数)

enter image description here

  • 知道 Internet Explorer 8 崩溃的原因吗?
  • 解决方案?

最佳答案

问题不在于 hovercheck 函数。大部分时间花在事件处理程序中。

$("#mainnav").find("ul.tabs > li > a").on("hoverintent", function() { 
/* all the time is spent here, what is this code? */
/* try putting something simple here to see if the performance issue goes away */
console.log("in event handler!");
});

关于javascript - 为什么 hoverintent 函数使用这么多 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17021305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com