javascript - 为什么 uploadcare 每 N 毫秒重绘 html 标签?

标签 javascript jquery sizzle uploadcare

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

我不确定重绘是否是正确的术语,但这是正在发生的事情: 检查 chrome devtools HTML 标记突出显示,当您在元素上添加/删除属性时,行为相同。而且它似乎并没有结束,它只是每隔 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>

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

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

关于javascript - 为什么 uploadcare 每 N 毫秒重绘 html 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924531/

相关文章:

javascript - 如何使用标题动态中的文本

jquery - sizzle 支持选择器中的命名空间吗?

javascript - 如何处理具有优先级的事件委托(delegate)?

javascript - 如何使 jQuery.ready 中定义的函数在全局范围内可用?

javascript - 需要帮助了解如何使用 Twitter 的 @anywhere is Follow/Followed By 方法

jquery - 如何扩展 jQuery 的选择器引擎以在找不到选择器时发出警告?

javascript - 具有 jQuery 引用格式的 A4 论文式两列 CSS

javascript - JSON 路径中的变量

javascript - GitHub Pages + Jekyll + Bootstrap + CDN问题

javascript - Vue中父组件向子组件传递数据的方法