Kas ir SplashScreen, tiem, kas kodē, man jāstāsta nav. Bet pārējiem laikam nenāktu par ļaunu. Doma ir tāda. Kad, piemēram, mēs laižam Photoshopu, jamais mums parāda ķipa bildi. Izskatās apmēram sekojoši (Allaire HomeSite 4.0 un Adobe ImageReady 2.0):
Kāda ir izskata būtība splashscreenam? Tam nav bordera (to biš - apmales:), kā arī tas nav liels.
Normāli, IE neļauj atvērt logu bez bordera. Bet, ja tu attaisi windowu fullscreenaa (pa visu ekrānu; nospied taustiņu F11), tam nav nekāda bordera. To var izdarīt, izmantojot window.open() metodi ar parametru fullscreen=1.
Tagadiņās mums ir logs fullscreenā. Nu i, tu teiksi. Tas takš tizli - splascreens pa visu ekrānu. Nu takš. Pareizi. Tizli. A var izmantot vienu fīču - tu vari to samazināt izmērā un novietot kur gribi uz ekrāna. Attiecīgās metode ir: resizeTo() un moveTo(). Parametri:
Nu uo. Mums značit ir splashscreens. Bet. Normāli splashscreens ir arī AlwaysOnTop. Ar domu - visu laiku augšpus visiem citiem logiem. Tas jau ir viltīgāk. Te nu mēs izmantosim vienu sliktu paņēmienu - ik pēc intervāla splashWinā izsauksim focus() metodi.
Un tātad - viss, kas vaidzīgs mums jau ir zināms. Značit, kods ir:
var splashWin, autoCloseTimeoutHandle, ontopIntervalHandle
function openSplashWin (uri, width, height, autoCloseTime) {
// pozicionējam logu
var w = window.screen.width;
var h = window.screen.height;
var l = (w-width)/2;
var t = (w-width)/2;
splashWin = window.open(uri, '_splash', 'fullscreen=1, toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0');
// noslēpjam, kamēr tas inicializējas
splashWin.blur();
// uzfokusējam šito logu (lai būtu neaizdomīgi:)
window.focus;
// ik pa 50 milisec sakām, ka viņš ir focus()
ontopIntervalHandle = splashWin.setInterval('window.opener.splashWin.focus();', 50);
// intervāls un handleris ir jāattīra pirms aizvēršanas
splashWin.document.body.onbeforeunload = function() {
window.cleareInterval(autoCloseTimeoutHandle);
window.onbeforeunload = null;
};
// inicializējam intervālu
splashWin.document.body.onload = function() {
splashWin.setInterval("window.opener.splashWin.focus();", 50);
};
// attīrām taimoutu (na vsjakije paž.)
window.clearTimeout(autoCloseTimeoutHandle);
// nu un tas ir testeris, vai nav laiks taisīties cieti
if (autoCloseTime != null && autoCloseTime > 0) {
autoCloseTimeoutHandle = window.setTimeout("splashWin.close()", autoCloseTime);
}
// pirms aizvēršanas aizveram nafig (tāpatās;)
window.onbeforeunload = function() {
splashWin.close();
};
}
(openSplashWin('splash_01.htm', 300, 100, 5000))
Diezgan pasmags gabals, bet, lai iebrauktu, jāurbjās sourcei cauri pašam. Moš drīz apstāstīšu par window.onbeforeunload() handleri.