Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Очень нужна помощь, простой вопрос (https://javascript.ru/forum/events/18885-ochen-nuzhna-pomoshh-prostojj-vopros.html)

Nataly12 19.07.2011 14:53

Очень нужна помощь, простой вопрос
 
Пересмотрела множество тем в интернете , так и не получилось сделать простую вещь - вызвать init(); после загрузки страницы в ие. (Для остальных браузеров получилось сделать.) Подскажите пожалуйста способы.

ваый 19.07.2011 15:00

а как делали для других браузеров?

Nataly12 19.07.2011 15:08

А это имеет значение?
Вот весь код но для ие он не работает

// ff, opera
if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
}






// ie
/*@cc_on @*/

document.write("<script id=__ie_onload defer src=javascript:void(0)>");
document.write("<\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
    if (this.readyState == "complete") {
        init();
    }
};
/*@end @*/

// safari
if (/WebKit/i.test(navigator.userAgent)) {
    var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
            clearInterval(_timer);
            delete _timer;
            init();
        }
    }, 10);
}

// others
window.onload = init;
]

melky 19.07.2011 15:23

мне просто с дуба хочется рухнуть. бедная собака Якоба Нильсена. (htmlbook.ru)

после загрузки страницы?

прочитайте это тут все ясно расписано. не надо писать такие хитрые конструкции

Nataly12 19.07.2011 15:36

Спасибо, сейчас попробую(он кстати тоже не короткий). Я новичок в этом в интернете море методов, большинство из которых не работают. Неужели это такой сложный вопрос?

melky 19.07.2011 15:41

нет, просто много тонкостей :)

легче всего положить <script> под <body>.. конечно.. легче всего, и кроссбраузерно ...но разве это интересно?

Nataly12 19.07.2011 15:41

Абсолютно ничего не поняла в этом коде. Куда вставить мою уже готовую функцию init() , чтобы она работала при загрузке старницы?

Nataly12 19.07.2011 15:42

А можно мне самый неинтерестный метод, но чтоб работало и прям сейчас?

Nataly12 19.07.2011 15:43

Под боди не получится так как у меня боди в шаблоне сайта, а скрипт только в шаблоне одного модуля

melky 19.07.2011 15:45

там есть работающий код
Пример: отрывок из статьи..
<script>
function init(){ alert('function "init" '); }

bindReady( init );

function bindReady(handler){

	var called = false

	function ready() { // (1)
		if (called) return
		called = true
		handler()
	}

	if ( document.addEventListener ) { // (2)
		document.addEventListener( "DOMContentLoaded", function(){
			ready()
		}, false )
	} else if ( document.attachEvent ) {  // (3)

		// (3.1)
		if ( document.documentElement.doScroll && window == window.top ) {
			function tryScroll(){
				if (called) return
				if (!document.body) return
				try {
					document.documentElement.doScroll("left")
					ready()
				} catch(e) {
					setTimeout(tryScroll, 0)
				}
			}
			tryScroll()
		}

		// (3.2)
		document.attachEvent("onreadystatechange", function(){

			if ( document.readyState === "complete" ) {
				ready()
			}
		})
	}

	// (4)
    if (window.addEventListener)
        window.addEventListener('load', ready, false)
    else if (window.attachEvent)
        window.attachEvent('onload', ready)
    /*  else  // (4.1)
        window.onload=ready
	*/
}
</script>
<body>
body!
</body>


Часовой пояс GMT +3, время: 21:59.