14.07.2012, 01:15
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
да, я до этого додумался уже, только почему то забыл написать(сел в 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>
переделал немного совю первую функцию, в боди можно добавить только после полной загрузки=)
|
|
14.07.2012, 01:19
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от cyber
|
в боди можно добавить только после полной загрузки=)
|
кто тебе это сказал?
<body>
<script>
document.body.appendChild( document.createElement('b') );
alert( document.body.innerHTML );
</script>
<div></div>
<script>
alert( document.body.innerHTML );
</script>
</body>
в потоке можно делать что угодно
|
|
14.07.2012, 01:24
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
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>
|
|
14.07.2012, 01:27
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
у меня такой алерт
<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>
|
|
14.07.2012, 01:29
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
потом по тестю на большой странице.
а какие еще есть варианты для старых браузеров?
|
|
14.07.2012, 01:29
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от cyber
|
у меня такой алерт
|
а у меня другой.. и это уже говорит о том что раз на раз не приходится.. тут все зависит от интерпретатора скрипта, на сколько он отложит выполнение setTimeout
|
|
14.07.2012, 01:31
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от cyber
|
а какие еще есть варианты для старых браузеров?
|
никаких, только то что используют везде.
И еще вопрос а нафига тебе это? То что давно всеми используется нормально работает.
|
|
14.07.2012, 03:22
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от devote
|
никаких, только то что используют везде.
И еще вопрос а нафига тебе это? То что давно всеми используется нормально работает.
|
дак я пытался взять скрипт из этой статьи http://javascript.ru/tutorial/events/ondomcontentloaded вроде понял как он пашет, да вот только в ие не работает,а проверить почему не могу нужно скачать xp для виртуалки что бы запустить и посмотреть ошибки...
вот код со страницей что бы запустить http://learn.javascript.ru/play/Xegrjb.
|
|
14.07.2012, 03:41
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
вот работает везде(покрайнимере я не нашел где не работате )
<!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>
|
|
14.07.2012, 03:47
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от cyber
|
дак я пытался взять скрипт из этой статьи
|
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();
}
}
}
Последний раз редактировалось devote, 14.07.2012 в 03:59.
|
|
|
|