288288
289289 ElementQueries . withTracking = false ;
290290
291- function init ( ) {
292- ElementQueries . instance = new ElementQueries ( ) ;
291+ ElementQueries . init = function ( ) {
292+ if ( ! ElementQueries . instance ) {
293+ ElementQueries . instance = new ElementQueries ( ) ;
294+ }
295+
293296 ElementQueries . instance . init ( ElementQueries . withTracking ) ;
294- }
297+ } ;
298+
299+ var domLoaded = function ( callback ) {
300+ /* Internet Explorer */
301+ /*@cc_on
302+ @if (@_win32 || @_win64)
303+ document.write('<script id="ieScriptLoad" defer src="//:"><\/script>');
304+ document.getElementById('ieScriptLoad').onreadystatechange = function() {
305+ if (this.readyState == 'complete') {
306+ callback();
307+ }
308+ };
309+ @end @*/
310+ /* Mozilla, Chrome, Opera */
311+ if ( document . addEventListener ) {
312+ document . addEventListener ( 'DOMContentLoaded' , callback , false ) ;
313+ }
314+ /* Safari, iCab, Konqueror */
315+ if ( / K H T M L | W e b K i t | i C a b / i. test ( navigator . userAgent ) ) {
316+ var DOMLoadTimer = setInterval ( function ( ) {
317+ if ( / l o a d e d | c o m p l e t e / i. test ( document . readyState ) ) {
318+ callback ( ) ;
319+ clearInterval ( DOMLoadTimer ) ;
320+ }
321+ } , 10 ) ;
322+ }
323+ /* Other web browsers */
324+ window . onload = callback ;
325+ } ;
295326
296327 if ( window . addEventListener ) {
297- window . addEventListener ( 'load' , init , false ) ;
328+ window . addEventListener ( 'load' , ElementQueries . init , false ) ;
298329 } else {
299- window . attachEvent ( 'onload' , init ) ;
330+ window . attachEvent ( 'onload' , ElementQueries . init ) ;
300331 }
332+ domLoaded ( ElementQueries . init ) ;
301333
302- } ) ( ) ;
334+ } ) ( ) ;
0 commit comments