jquery regex修补程序导致高cpu消耗

High cpu consumption due to a jquery regex patch

本文关键字:cpu 消耗 regex 修补 程序 jquery      更新时间:2023-09-26

我将从事其他人开发的项目。我和这家伙没有任何联系。我注意到加载页面时浏览器的cpu消耗非常高。

经过一些调查,我认为问题来自jquery regex的一个补丁,但我不清楚这个补丁的目标和cpu消耗的原因。

jQuery.expr[':'].regex = function(elem, index, match) {
   var matchParams = match[3].split(',');
   var validLabels = /^(data|css):/;
   var attr = {
      method:
         matchParams[0].match(validLabels) ? matchParams[0].split(':')[0] : 'attr',
         property: matchParams.shift().replace(validLabels,'')
   };
   var regexFlags = 'ig';
   var regex = new RegExp(matchParams.join('').replace(/^'s+|'s+$/g,''), regexFlags);
   return regex.test(jQuery(elem)[attr.method](attr.property));
};

我看到这种方法经常被调用。

我有好几次像这样调用regex。

$(':regex(id,DelCompo.*$)').livequery('click',function(e) {
   //...
}

如果我对它们进行评论,cpu消耗似乎是正常的。当然,有些功能被破坏了。

我认为问题来自这个新的regex函数。这是正确的吗?解决这个问题的最佳方法是什么?

感谢

FYI,我通过在jquery选择器中不使用regex来修复它。我想这不是我的文件的正确选择。