да, я до этого додумался уже, только почему то забыл написать(сел в 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, время: 15:12. |