Прелоад картинок на JavaScript
Прелоад картинок делаю так:
...
<script language="javascript">
img_off=new Image();
img_on=new Image();
img_off.src='buttons/img_off.gif';
img_on.src='buttons/img_on.gif';
</script>
</head>
<body>
...
Как ни странно, работает.
Но вот если с этой страницы открывается новое окно (типа window.open(...)), то после возвращения на исходную страницу весь прелоад куда-то пропадает.
Как быть?
Сорри, сие не флейм. Не хотел плодить сабж, поэтому пишу тут. У меня похожая проблема, но несколько другого рода:
...
function setbg(obj,color){
elm = document.getElementById(obj);
elm.style.background=color;
}
...
<td id='bbb' background='img/bg1.gif'>
<a
href='java script:void(0)'
onmouseover="setbg('bbb','url(img/bg2.gif)')"
onmouseout="setbg('bbb','url(img/bg1.gif)')">
...
</a>
</td>
Вообще-то сие придумывалось исключительно для bgcolor='#...' но и для background подходит.
НО: Preload ВООБЩЕ не действует. По всей видимости, картинка положенная фоном НЕ является частью семейства images документа. Может ГУРЫ яваскрипты знают как победить? Может заодно объяснят как объект типа img.src='...' присвоить к style.background (я так понимаю, решение задачки тут и спрятано)
<!--
// Given "Foo", returns "images/Foo.gif".
function regularImageFile(imageName) {
return("images/" + imageName + ".gif");
}
// Given "Bar", returns "images/Bar-Negative.gif".
function negativeImageFile(imageName) {
return("images/" + imageName + "-Neg.gif");
}
// Cache image at specified index. E.g., given index 0,
// take imageNames[0] to get "Home". Then preload
// images/Home.gif and images/Home-Negative.gif.
function cacheImages(index) {
regularImageObjects[index] = new Image(150, 25);
regularImageObjects[index].src =
regularImageFile(imageNames[index]);
negativeImageObjects[index] = new Image(150, 25);
negativeImageObjects[index].src =
negativeImageFile(imageNames[index]);
}
imageNames = new Array("about", "services","equip",
"gallery", "order","contacts");
regularImageObjects = new Array(imageNames.length);
negativeImageObjects = new Array(imageNames.length);
// Put images in cache for fast highlighting.
for(var i=0; i<imageNames.length; i++) {
cacheImages(i);
}
// This is attached to onMouseOver -- change image
// under the mouse to negative (reverse video) version.
function highlight(imageName) {
document.images[imageName].src =
negativeImageFile(imageName);
}
// This is attached to onMouseOut -- return image to
// normal.
function unHighlight(imageName) {
document.images[imageName].src = regularImageFile(imageName);
}
// -->
в тело засовываем(пример):
работает на 100, проверено!
Т.е. чтоб сперва загрузился , а потом начал проигрываться.
спасибо.