Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery将css游标类型添加到表单提交/链接中。网站性能/速度的影响?“知道”;副作用;?_Jquery_Css - Fatal编程技术网

jQuery将css游标类型添加到表单提交/链接中。网站性能/速度的影响?“知道”;副作用;?

jQuery将css游标类型添加到表单提交/链接中。网站性能/速度的影响?“知道”;副作用;?,jquery,css,Jquery,Css,我为一个大型网站工作(每月有500多万次独特点击,约5500-6000万次页面浏览/印象) 我们目前正在更新我们的可用性(标签索引、标签等) 我使用css类和jQuery(见下面的代码)将表单提交(以及与ajax相关的部分页面刷新/更新等)上的光标类型更改为“progress”,以便用户通过类名“loadWait”立即知道正在发生“某事” //css class body.wait *, body.wait { cursor:progress !important; }

我为一个大型网站工作(每月有500多万次独特点击,约5500-6000万次页面浏览/印象)

我们目前正在更新我们的可用性(标签索引、标签等)

我使用css类和jQuery(见下面的代码)将表单提交(以及与ajax相关的部分页面刷新/更新等)上的光标类型更改为“progress”,以便用户通过类名“loadWait”立即知道正在发生“某事”

 //css class
   body.wait *, body.wait {
    cursor:progress !important;
   }

   //jQuery
   $(document).ready(function() { 
      $('.loadWait').click(function(){
         progerssCursor();
      });
   });
   function progerssCursor(){
    $('body').addClass('wait');
   }
   function removeProgerssCursor(){
    $('body').removeClass('wait');
   }

   //example html   
   <input type="sumbit" class="loadWait" />
   <a href="..." class="loadWait" />

   //in ajax requests by calling functions "progressCursor()" and 
"removeProgressCursor" at the appropriate time/place
//css类
body.wait*,body.wait{
光标:进步!重要;
}
//jQuery
$(文档).ready(函数(){
$('.loadWait')。单击(函数(){
progerssCursor();
});
});
函数progersscrsor(){
$('body').addClass('wait');
}
函数RemoveProgersCursor(){
$('body').removeClass('wait');
}
//示例html
//通过调用函数“progressCursor()”和
在适当的时间/地点“移除进度光标”
因此,问题是:

  • 这种方法有任何已知的“副作用”吗?(我在谷歌上搜索了很多次,没有找到任何让我不相信的东西)

  • 我们正在讨论是否应该将class=“loadWait”附加到我们的所有链接(显然不是带有target=“\u blank”的链接,因为我们不希望光标在这种情况下发生变化)。您的想法是什么?我们的推理是,有时出于任何原因(服务器负载高、互联网连接慢等),在用户“点击链接”和实际页面开始呈现之间可能会有几秒钟的奇怪延迟,这样用户就会立即知道“发生了什么事”(我们知道选项卡中的加载图标在那里,但用户经常会错过)。 你的想法是什么?为我们所有的链接这么做是不是太过分了?(这里不谈工时)

  • 有人知道这会增加什么样的额外页面加载时间(如果有)吗?(美元('.loadWait')。单击(函数(){…工作?jQuery是在页面加载时检查整个DOM的“单击”事件,还是在“逐个单击”的基础上检查匹配的类名?)

  • 还有其他想法吗


  • 注意:我们已经在IE6-9、FF3.6、FF11、FF12、Opera、Safari(windows)、Chrome等上测试了此代码,没有已知/明显的错误/问题。

    我将继续,并在#之前回答您的问题:

  • 做你正在做的事情没有直接的副作用。但是有些场景你是无能为力的,例如禁用JavaScript的用户。尽管如此,我知道Chrome(至少是更新版本)将在页面加载时自动将光标更改为加载图标,这样Chrome浏览器就不需要额外的JavaScript了。但是,对于流量高的站点,运行JavaScript不应该令人担心(参见#2),除非JS是面向ajax的
  • 如果您试图在链接单击时添加自定义加载指示器,那么向每个链接添加一个单击处理程序将是合适的方法。JavaScript的优点在于它纯粹是客户端。因此,不管页面加载需要多长时间,用户第二次单击“loadWait”时“链接它将首先启动JavaScript,然后等待页面加载。因此,根据您描述的服务器负载,这对实际单击链接的操作没有影响,因为您的文章都是客户端的
  • 只要JavaScript位于主体的底部(应该是这样的)页面加载时间不会受到影响,因为在执行任何JavaScript之前,所有HTML元素都已加载。但是,如果您真的担心,单击事件不是一个非常繁重的jQuery函数,但就像任何jQuery函数一样,如果使用过多,会导致最小的延迟。我怀疑这是否会是一个问题,因此我会说,别担心,只要确保你的JS在页面底部就行了
  • 简单地跳回到#1:确保查看所有浏览器固有的功能,以便确定哪些浏览器(如Chrome)已经提供了此功能
  • 祝你好运,希望这对你有所帮助


    编辑:还有一件事我忘了提。如果您在页面上有任何动态加载JavaScript,.click事件将不会注册到该动态JavaScript中的任何链接。这是假设您的代码段在$(文档)中启动。准备好了。如果您要将其移动到$(窗口).load更合适。但是,更好的解决方案是利用jQuery的.on函数(以前是.live)。on函数将允许动态JavaScript也被绑定,但请注意:如果定期有大量的动态JavaScript,这可能会妨碍该JavaScript的性能。

    我将继续回答您的问题:

  • 做你正在做的事情没有直接的副作用。但是有些场景你是无能为力的,例如禁用JavaScript的用户。尽管如此,我知道Chrome(至少是更新版本)将在页面加载时自动将光标更改为加载图标,这样Chrome浏览器就不需要额外的JavaScript了。但是,对于流量高的站点,运行JavaScript不应该令人担心(参见#2),除非JS是面向ajax的
  • 如果您试图在链接单击时添加自定义加载指示器,那么向每个链接添加一个单击处理程序将是合适的方式。JavaScript的优点在于它纯粹是客户端。因此,不管页面加载需要多长时间,用户第二次单击“loadWait”链接它将首先启动JavaScript,然后等待页面加载。因此,根据您描述的服务器负载,这对实际单击页面的操作没有影响