Вход

Просмотр полной версии : Очень нужна помощь, простой вопрос


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)

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

прочитайте это (http://javascript.ru/tutorial/events/ondomcontentloaded) тут все ясно расписано. не надо писать такие хитрые конструкции

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>

ваый
19.07.2011, 15:46
<script type="text/javascript">
onReady(init);
</script>

Nataly12
19.07.2011, 16:28
Спасибо!!