Javascript 优化jQuery以避免Safari:&x201C;此网页使用了大量能量…”;
我的网页上出现了Safari警告消息,但我只使用了少量自定义jQuery 这个网页使用了大量的能量。关闭它可能会提高Mac的响应能力 我在下面列出了我的jQuery,有人能建议这是否可能是原因吗?我看不出有什么具体的东西会占用大量资源并导致出现警告 我可以优化此代码以减少对用户的影响吗Javascript 优化jQuery以避免Safari:&x201C;此网页使用了大量能量…”;,javascript,jquery,performance,Javascript,Jquery,Performance,我的网页上出现了Safari警告消息,但我只使用了少量自定义jQuery 这个网页使用了大量的能量。关闭它可能会提高Mac的响应能力 我在下面列出了我的jQuery,有人能建议这是否可能是原因吗?我看不出有什么具体的东西会占用大量资源并导致出现警告 我可以优化此代码以减少对用户的影响吗 jQuery(文档).ready(函数(){ jQuery('.fa-user-o')。单击(函数(){ jQuery('#modalBkg').fadeIn(300); }); }); jQuery(文档).
jQuery(文档).ready(函数(){
jQuery('.fa-user-o')。单击(函数(){
jQuery('#modalBkg').fadeIn(300);
});
});
jQuery(文档).ready(函数(){
jQuery('.fa乘以矩形')。单击(函数(){
jQuery('#modalBkg').fadeOut(300);
});
});
jQuery(文档).ready(函数(){
jQuery('.fa align justify')。单击(函数(){
jQuery('.aby粘滞菜单').slideToggle();
});
});
jQuery(函数($){
$(文档).on('click','li.vc_tta-tab a,li.vc_tta-tab,.vc_tta-panel-title',函数(){
$('html,body').stop();
});
});
jQuery(“.fa乘以矩形”).mouseover(函数(){
jQuery(“.modalBody.modalLeft”).animate({
不透明度:0.4
});
}).mouseleave(函数(){
jQuery(“.modalBody.modalLeft”).animate({
不透明度:1
});
});
这里的主要问题是使用鼠标盖
,鼠标移动到事件附加到的元素上的每个像素触发一次。与动画结合使用时,对系统的要求可能非常高。更好的解决方法是使用mouseenter
,这可以通过使用
比这更好的是使用CSS,但这需要.modalBody
和.modalLeft
元素是.fa乘以矩形
的兄弟或后代,考虑到上下文,这似乎不太可能
还请注意,您不需要多个script
标记,可以将它们组合成一个。类似地,您不需要多个document.ready事件处理程序,请将它们合并到一个中
综上所述,尝试以下方法:
jQuery(函数($){
$('.fa-user-o')。单击(函数(){
$('modalBkg')。法代因(300);
});
$('.fa align justify')。单击(函数(){
$('.aby粘滞菜单').slideToggle();
});
$(文档)。在('click','li.vc_tta-tab a,li.vc_tta-tab,.vc_tta-panel-title',函数()上{
$('html,body').stop();
});
$(“.fa乘以矩形”)。单击(函数(){
$('modalBkg')。淡出(300);
}).hover(函数(){
$(“.modalBody.modalLeft”).animate({
不透明度:0.4
});
},函数(){
$(“.modalBody.modalLeft”).animate({
不透明度:1
});
});
});
另一方面,我要检查对
$('html,body').stop()的调用是否真的在做任何事情,因此是必要的。这似乎是一件奇怪的事情,因为这意味着你在不断地为整个主体设置动画,这也会导致性能问题。你在鼠标上方处理程序中的每一个指针移动都会启动一个新的动画,即“连续”。您还应该只有一个ready
处理程序,为什么要包装单击处理程序的定义(on
调用)?您可能希望学习一些关于jquery的介绍性书籍、完整的api文档或教程。第一个问题是页面中还加载了哪些内容?感谢您提供的详细信息Rory,我敢肯定主要问题是使用了mouseover()
;当单击.vc\u tta-panel-title
容器时,.stop()
也用于禁用默认的滚动效果。再次感谢您在此问题上的帮助:)