The Uploadcare JS library searches for new widgets on the page every 100ms. This is called live initialization. Internally the plugin uses jQuery (which uses Sizzle selector engine) and this is how Sizzle actually works: it adds id
elements to the root element of the search scope before querying and removes it after. You can verify this with a simple example:
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script>
setInterval(function() {
$.find('[attr]', document.documentElement);
}, 200);
</script>
If you want to avoid flicking, you have two options. You can disable live initialization at all by adding UPLOADCARE_LIVE = false;
to js code. Alternatively, you can add any custom id
attribute to the html
tag. Sizzle will not change it.
In the future, we are planning to use MutationObserver
to watch for the new widgets on the page.