2017-11-20 19 views
1

私はHTMLタグを選択し、それにいくつかのことをするスクリプト(拡張機能)に取り組んでいます。ただし、このHTMLタグは、特定の時間にページ上に動的にロードされ、読み込まれるとすぐに検出したいと考えています。現在、私はwhileループ(未定義のチェック)でhtmlページをポーリングしていますが、ページに多くの遅延があります。回避策はありますか?クロム拡張ポーリングhtmlの遅れページ

$(document).ready(function() { 
    // some code 
    var sizesList=document.getElementsByClassName("exp-pdp-size-dropdown-container nsg-form--drop-down--option-container selectBox-options nsg-form--drop-down exp-pdp-size-dropdown exp-pdp-dropdown two-column-dropdown selectBox-dropdown-menu")[0]; 
    while(typeof(sizesList) == 'undefined') { 
    setTimeout(function() {}, 700) 
    sizesList=document.getElementsByClassName("exp-pdp-size-dropdown-container nsg-form--drop-down--option-container selectBox-options nsg-form--drop-down exp-pdp-size-dropdown exp-pdp-dropdown two-column-dropdown selectBox-dropdown-menu")[0]; 
    } 
// some more code 
} 

私はthisウェブページでテストしています。

+1

を。その要素が現れるまで、setTimeoutを呼び出す関数を持つ方がいいかもしれません。 – Shadow

答えて

0

sizesList=document.getElementsByClassName(...を実行しているため、ページが遅れていますです。 setTimeoutは非同期なので、何もしません。あなたが期待するように、すべての700msのポーリングを

、あなたはsetInterval検討する必要がありますwhileループは、おそらく完全にロックアップすること

setInterval(function() { 
    if(typeof(sizesList) == 'undefined') 
    sizesList=document.getElementsBy(... 
}, 700) 
+0

ありがとう!私の変数が定義されると、どのようにしてインターバルを終了し、コードの残りの部分を引き継ぐのでしょうか? – JC1

+0

うん! https://stackoverflow.com/questions/109086/stop-setinterval-call-in-javascriptを参照してください。 – frozen

関連する問題