要素の読み込みを待っての処理

動的要素に対する処理をしたい事が増えているけど、
他の動的要素のタイミングだったりの条件で左右されたりと
動的要素の出てくるタイミングってなかなか難しく。
だからといって、サイトが重くなるような方法はなるべく避けたい。
状況によって、適した方法を選びたいけど、毎回苦戦しちゃうんだな・・・

javascriptでサイトの読み込み後にエリアの操作をしたい場合、
大体は、以下どれかのような感じでタイミングを計るのですが。

JavaScript
document.addEventListener("DOMContentLoaded", function() { //DOMの解析が完了した時点で実行
    // 処理
});

document.addEventListener('readystatechange', function(){	//ロードのステータスが変化したら実行
    if(document.readyState === 'interactive'){	// interactiveに変化したとき実行
        // 処理
    }
    if(document.readyState === 'complete'){		//completeに変化したとき実行
        // 処理
    }
});

window.addEventListener('load', function(){	//すべてのデータの読み込みが完了した時点で実行
    // 処理
});

何なら、操作したいHTMLエリアに「onload=”xxxxxx()”」のようにjavascriptを呼べば良いのだけど、
今回は自分でHTMLを書き換えられない部分のエリアで、
かつ、動的に作成されている(から表示が遅い)エリアを操作したかったので。

苦肉の策で、以下の通り。

JavaScript
var counter = 0;
interval_xxxx = setInterval(function() {	// 0.1秒ごとにquantity読込チェック実行
    if (document.getElementById( "xxxx" )) {
        console.log("xxxx : ","OK");
        var element = document.getElementById( "xxxx" ) ;
        // 処理
    		clearInterval(interval_xxxx);    // 繰り返しを停止
    } else {
        counter = counter + 1;
        console.log("xxxx : ","null","  counter : ",counter);
    		if ( counter > 20 ) {
    		    clearInterval(interval_xxxx);
    		}
    };
}, 100);

タイトルとURLをコピーしました