да, я до этого додумался уже, только почему то забыл написать(сел в WOT поиграть:))
вот что мне пришло на в голову <!DOCTYPE HTML> <html> <head> <script> var scr = document.createElement('script'); scr.type = 'text/javascript'; scr.id = 'DomLoadedScript'; (function body_end(){ try { document.body.appendChild(scr); alert(document.body.innerHTML); } catch(e){ setTimeout(body_end,0); } }()); </script> </head> <body> <script > function handler(){ alert('готов'); } </script> <img src="http://worldoftanks.ru/dcont/fb/media/batchat_ru_june_clear/1920x1200.jpg"> <img id="img" src="http://wallpaper.goodfon.ru/image/302908-2880x1800.jpg"/> </body> </html> переделал немного совю первую функцию, в боди можно добавить только после полной загрузки=) |
Цитата:
<body> <script> document.body.appendChild( document.createElement('b') ); alert( document.body.innerHTML ); </script> <div></div> <script> alert( document.body.innerHTML ); </script> </body>в потоке можно делать что угодно |
cyber, вот на твоем примере:
<!DOCTYPE HTML> <html> <head> <script> var scr = document.createElement('script'); scr.type = 'text/javascript'; scr.id = 'DomLoadedScript'; (function body_end(){ try { document.body.appendChild(scr); alert(document.body.innerHTML); } catch(e){ setTimeout(body_end,0); } }()); </script> </head> <body> <script > function handler(){ alert('готов'); } </script> <script> for( var i = 0; i < 10000; i++ ) {} // просто задержка, вместо задержки может быть тысяча тегов иль еще чего. </script> <img src="http://worldoftanks.ru/dcont/fb/media/batchat_ru_june_clear/1920x1200.jpg"> <img id="img" src="http://wallpaper.goodfon.ru/image/302908-2880x1800.jpg"/> </body> </html>в результате видим алерт с содержимым: <script> function handler(){ alert('готов'); } </script> <script> for( var i = 0; i < 10000; i++ ) {} // просто задержка, вместо задержки может быть тысяча тегов иль еще чего. </script><script type="text/javascript" id="DomLoadedScript"></script> |
у меня такой алерт
<script> function handler(){ alert('готов'); } </script> <script> for( var i = 0; i < 10000; i++ ) {} // просто задержка, вместо задержки может быть тысяча тегов иль еще чего. </script> <img src="http://worldoftanks.ru/dcont/fb/media/batchat_ru_june_clear/1920x1200.jpg"> <img id="img" src="http://wallpaper.goodfon.ru/image/302908-2880x1800.jpg"> <script type="text/javascript" id="DomLoadedScript"></script> |
потом по тестю на большой странице.
а какие еще есть варианты для старых браузеров? |
Цитата:
|
Цитата:
И еще вопрос а нафига тебе это? То что давно всеми используется нормально работает. |
Цитата:
вот код со страницей что бы запустить http://learn.javascript.ru/play/Xegrjb. |
вот работает везде(покрайнимере я не нашел где не работате )
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script > var DOM = {} function ready(){ if(!document.addEventListener){ document.addEventListener('DOMContentLoaded',DOM.loaded,false); } else { var scr = document.createElement('script'); scr.type = 'text/javascript'; scr.text = 'DOM.loaded()'; scr.id = 'DomLoadedScript'; (function body_end(){ try { document.body.appendChild(scr); } catch(e){ setTimeout(body_end,0); } }()); } } DOM.loaded = function (){ handler(); img_src(); } ready(); </script> </head> <body> <script > function img_src(){ alert(document.body.innerHTML); } function handler(){ alert('готов'); } </script> <img src="http://worldoftanks.ru/dcont/fb/media/batchat_ru_june_clear/1920x1200.jpg"> <img id="img" src="http://wallpaper.goodfon.ru/image/302908-2880x1800.jpg"/> </body> </html> |
Цитата:
function DOMReady( callback ) { if ( document.readyState === "complete" ) { return setTimeout( callback, 1 ); } var loaded = function( doScroll ) { if ( document.removeEventListener ) { document.removeEventListener( 'DOMContentLoaded', loaded, false ); window.removeEventListener( 'load', loaded, false ); loaded = null; callback(); } else if ( document.detachEvent ) { if ( document.readyState === "complete" || doScroll === null ) { document.detachEvent( 'onreadystatechange', loaded ); window.detachEvent( 'onload', loaded ); loaded = null; callback(); } } } if ( document.addEventListener ) { document.addEventListener( "DOMContentLoaded", loaded, false ); window.addEventListener( "load", loaded, false ); } else if ( document.attachEvent ) { document.attachEvent( "onreadystatechange", loaded ); window.attachEvent( "onload", loaded ); var toplevel = false; try { toplevel = window.frameElement == null; } catch( _e_ ) {} if ( document.documentElement.doScroll && toplevel ) { var check = function() { if ( !loaded ) return; try { document.documentElement.doScroll( "left" ); } catch( _e_ ) { setTimeout( check, 0 ); return; } loaded( null ); } check(); } } } |
Часовой пояс GMT +3, время: 09:16. |