Просмотр полной версии : Очень нужна помощь, простой вопрос
Nataly12
19.07.2011, 14:53
Пересмотрела множество тем в интернете , так и не получилось сделать простую вещь - вызвать init(); после загрузки страницы в ие. (Для остальных браузеров получилось сделать.) Подскажите пожалуйста способы.
а как делали для других браузеров?
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;]
мне просто с дуба хочется рухнуть. бедная собака Якоба Нильсена. (htmlbook.ru)
после загрузки страницы?
прочитайте это (http://javascript.ru/tutorial/events/ondomcontentloaded) тут все ясно расписано. не надо писать такие хитрые конструкции
Nataly12
19.07.2011, 15:36
Спасибо, сейчас попробую(он кстати тоже не короткий). Я новичок в этом в интернете море методов, большинство из которых не работают. Неужели это такой сложный вопрос?
нет, просто много тонкостей :)
легче всего положить <script> под <body>.. конечно.. легче всего, и кроссбраузерно ...но разве это интересно?
Nataly12
19.07.2011, 15:41
Абсолютно ничего не поняла в этом коде. Куда вставить мою уже готовую функцию init() , чтобы она работала при загрузке старницы?
Nataly12
19.07.2011, 15:42
А можно мне самый неинтерестный метод, но чтоб работало и прям сейчас?
Nataly12
19.07.2011, 15:43
Под боди не получится так как у меня боди в шаблоне сайта, а скрипт только в шаблоне одного модуля
там есть работающий код
<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>
<script type="text/javascript">
onReady(init);
</script>
Nataly12
19.07.2011, 16:28
Спасибо!!
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot