Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
Javascript 为什么uploadcare每N毫秒重新绘制一次html标记?_Javascript_Jquery_Sizzle_Uploadcare - Fatal编程技术网

Javascript 为什么uploadcare每N毫秒重新绘制一次html标记?

Javascript 为什么uploadcare每N毫秒重新绘制一次html标记?,javascript,jquery,sizzle,uploadcare,Javascript,Jquery,Sizzle,Uploadcare,在使用文件上传小部件时,我注意到Uploadcare脚本不断地重新绘制HTML标记 我不确定重新喷漆是否是正确的术语,但下面是正在发生的事情: 选中chromedevtools将突出显示HTML标记,这与添加/删除元素属性时的行为相同。而且它似乎没有结束,它只是在每N毫秒继续。你可以在他们的主页上自己检查它,只需打开devtools并查看HTML标记 有人知道它为什么这么做吗?它叫什么?这会不会给移动用户带来性能问题?Uploadcare插件每隔100毫秒就会在页面上搜索新的小部件。这称为实时初

在使用文件上传小部件时,我注意到Uploadcare脚本不断地重新绘制
HTML
标记

我不确定重新喷漆是否是正确的术语,但下面是正在发生的事情: 选中chrome
devtools
将突出显示
HTML
标记,这与添加/删除元素属性时的行为相同。而且它似乎没有结束,它只是在每N毫秒继续。你可以在他们的主页上自己检查它,只需打开
devtools
并查看
HTML
标记


有人知道它为什么这么做吗?它叫什么?这会不会给移动用户带来性能问题?

Uploadcare插件每隔100毫秒就会在页面上搜索新的小部件。这称为实时初始化。该插件在内部使用jQuery(使用Sizzle选择器引擎),Sizzle实际上就是这样工作的:它在查询之前向搜索范围的根元素添加
id
元素,然后将其删除。您可以通过一个简单的示例来验证这一点:

<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script>
  setInterval(function() {
    $.find('[attr]', document.documentElement);
  }, 200);
</script>

setInterval(函数(){
$.find(“[attr]”,document.documentElement);
}, 200);
如果要避免轻弹,有两种选择。您可以通过添加
UPLOADCARE\u LIVE=false来禁用所有功能到js代码。或者,您可以将任何自定义的
id
属性添加到
html
标记中。Sizzle不会改变它


将来,我们计划使用
MutationObserver
来监视页面上的新窗口小部件。

他们不断删除和添加id属性。您可以右键单击html节点,然后选择“属性修改时中断”以自己确认这一点。他们为什么这么做,不确定,如果你想的话,你可以挖掘他们的代码,但对我来说,这听起来像是某种黑客行为。@Nit-nice诡计!无论他们的原因是什么,我都无法使用devtools编辑css样式,因为它一直在重新绘制:|有一个watch.js似乎触发了这一点(并不断发布到btw)@RetoAebersold我认为这是他们网站使用的另一个脚本,不是api的一部分,因为我在本地机器上看不到它。有什么办法可以阻止它吗?有没有关于MutationObserver补丁的更新?“这让我快发疯了。”李,现在就用其中一种方法来挽救你的理智吧。在html元素顶部使用
ID
是最简单的方法。