9

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

我不确定重新绘制是否是正确的术语,但这是正在发生的事情:检查chrome标记 是否突出显示,在元素上添加/删除属性时的行为相同。它似乎并没有结束,它只是每隔 N 毫秒就持续一次。您可以在他们的主页Uploadcare.com上自行查看,只需打开并查看标签即可。devtoolsHTMLdevtoolsHTML

任何人都知道它为什么这样做?它在呼唤什么?它会对移动用户造成性能问题吗?

4

1 回答 1

8

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;或者,您可以向标签添加任何自定义id属性。html嘶嘶声不会改变它。

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

于 2015-10-03T19:15:21.237 回答