2015-10-03 8 views
9

Uploadcareファイルアップロードウィジェットを使用している間、UploadcareスクリプトがHTMLタグを再ペイントし続けることに気付きました。なぜ、アップロードケアがN msごとにhtmlタグを再ペイントするのですか?

私は再描画が正しい用語であるが、ここでは何が起こっているかであるかどうかわからないです: クロムをチェックdevtoolsあなたは/要素の属性を削除追加するときHTMLタグは、同じ動作を強調しています。そして、それは終了するようには見えない、それはちょうどN ms毎に起こる。 Uploadcare.comのホームページでご確認いただけます。devtoolsを開き、HTMLタグをご覧ください。

誰もがなぜそれをしているのか分かりますか?それは何を呼びますか?モバイルユーザーにパフォーマンスの問題が発生しますか?

+1

彼らは常にid属性を削除して追加しています。 htmlノードを右クリックし、属性変更のブレークを選択すると、これを自分で確認できます。 _彼らはそれをやっているのかどうかはわかりませんが、望むなら、コードを掘り下げることができますが、私にはちょっとしたハックのように聞こえます。 – Nit

+0

@Nit nice trick!彼らの理由が何であれ非常に気になるものであれば、私はdevtoolsを使ってCSSスタイルを編集することができません。 –

+0

これを引き起こすようなwatch.jsがあります(常にhttps://mc.yandex.ru/webvisorbtwに投稿しています) –

答えて

8

Uploadcareプラグインは、ページ上の新しいウィジェットを100msごとに検索します。これをライブ初期化と呼びます。内部的には、プラグインは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> 

フリッキングを避けるには、2つの方法があります。 live initializationを無効にするには、UPLOADCARE_LIVE = false;をjsコードに追加します。または、任意のカスタムid属性をhtmlタグに追加できます。シズルはそれを変更しません。

今後、MutationObserverを使用して、ページ上の新しいウィジェットを監視する予定です。

+0

MutationObserverパッチの更新はありますか?これは私をナットにしている。 – Lee

+1

@Leeは、あなたの正気を救うために、これらの方法のうちの1つを今使っています。一番上のhtml要素に 'ID'を使うのが最も簡単です。 –

+0

確かに私はやった、それは十分な暫定的な解決策です。 – Lee

関連する問題