为什么 uploadcare 每 N 毫秒重新绘制 html 标签?

Why uploadcare is repainting html tag every N ms?

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

我不确定重绘是否是正确的术语,但这是正在发生的事情: 检查 chrome devtools HTML 标记是否突出显示,与 add/remove 元素上的属性相同。而且它似乎并没有结束,它只是每隔 N ms 就一直持续下去。您可以在他们的主页Uploadcare.com 上自己查看,只需打开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>

如果你想避免轻弹,你有两个选择。您可以通过在 js 代码中添加 UPLOADCARE_LIVE = false; 来完全禁用 live initialization。或者您可以将任何自定义 id 属性添加到 html 标记。嘶嘶声不会改变它。

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