为什么 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
来监视页面上的新小部件。
在使用 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
来监视页面上的新小部件。