Jump to content
  • 0

Из-за JS скрипта IE не открывает страницу


c0d3r
 Share

Question

На сайте нужен был скрипт предзагрузки изображений. Я нашёл такой скрипт:

function init() { 
// quit if this function has already been called
if (arguments.callee.done) return;

// flag this function so we don't do the same thing twice
arguments.callee.done = true;

// preload images
preload([
'img/img.gif',
'img/img2.gif',
'img/img3.gif',
'img/img4.gif',
'img/img5.gif',
'img/img6.gif'
]);

};

/* for Mozilla */
if (document.addEventListener)
{
document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write("<script defer src=js/ie_onload.js><"+"/script<");
/*@end @*/

/* for other browsers */
window.onload = init;

function preload(images) {
if (typeof document.body == "undefined") return;
try {

var div = document.createElement("div");
var s = div.style;
s.position = "absolute";
s.top = s.left = 0;
s.visibility = "hidden";
document.body.appendChild(div);
div.innerHTML = "<img src=\"" + images.join("\" /><img src=\"") + "\" />";
}
catch(e) {
// Error. Do nothing.
}
}

Скрипт отлично работает во всех браузерах кроме IE (разных версий). Если открыть сайт на локалхосте то всё нормально, а если в интернете то загружается только фон сайта и всё.

Подскажите из-за чего так происходит и как можно исправить.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

как раз про defer сейчас читал в Фл.

Атрибут defer

Если сценарий не выполняет какого-либо вывода в документ, например определяет функцию document.write(), но нигде ее не вызывает, то с помощью атрибута defer тега <script> можно сообщить броузеру, чтобы он спокойно продолжал обработку HTML-документа и отложил исполнение сценария до тех пор, пока не будет найден сце-нарий, выполнение которого отложено быть не может. Задержка исполнения сценария полезна, когда сценарий загружается из внешнего файла; если исполнение сценария не задержать, броузер вынужден будет ждать окончания загрузки и только потом сможет продолжить разбор содержимого документа. Задержка исполнения может привести к по-вышению производительности броузеров, способных использовать преимущества атри-бута defer. В HTML у атрибута defer не может быть значения; он просто должен при-сутствовать в теге:

<script defer>

// Любой JavaScript_код, не вызывающий document.write()

</script>

К моменту написания этих строк Internet Explorer был единственным броузером, исполь-зующим атрибут defer. При этом задержка выполняется, только когда тег <script> содержит атрибут src. Однако реализация задержки выполнена не совсем корректно, поскольку исполнение сценария с атрибутом defer всегда откладывается до окончания разбора документа, а не до того момента, когда встретится первый сценарий, исполнение которого нельзя отложить. Это означает, что отложенные сценарии в IE могут испол-няться не в том порядке, в котором они располагаются в теле документа. В результате некоторые функции или переменные, востребованные в сценариях, исполнение которых не откладывалось, могут быть не определены.

13.6.2010, 21:54

тьфу блин некропостер:)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy