Autor Zpráva
H.V.Pottar
Profil *
Chtěl bych se zeptat, nevěděli byjste čím to je, že v IE tento javascript funguje bezvadně, ale v Mozille vůbec? Poradíte mě, kde je chyba?


<BODY onload="startmotor(0)" > 
 
 
<style type="text/css"> 
 
#supertext { 
position:absolute;
left:0; 
top:0; 
visibility:hide; 
visibility:hidden; 
 
 
} 
 
</style>
 
<script language="JavaScript1.2"> 
 
 
var thecontent='<h2><img height="8" src="http://tranceband.com/TBobrazky/ptak2.gif"></h2>' 
var hidetimer=''; 
var BallSpeed = 1; 
 
var contentWidth; 
var contentHeight; 
var maxBallSpeed = 10; 
 
var xMax; 
var yMax; 
var xPos = 0; 
var yPos = 0; 
var xDir = 'right'; 
var yDir = 'down'; 
var superballRunning = true; 
var tempBallSpeed; 
var currentBallSrc; 
var newXDir; 
var newYDir; 
 
function initializeBall() { 
if (document.all) { 
xMax = document.body.clientWidth 
yMax = document.body.clientHeight 
document.all("supertext").style.visibility = "visible"; 
contentWidth=supertext.offsetWidth 
contentHeight=supertext.offsetHeight 
} 
else if (document.layers) { 
xMax = window.innerWidth; 
yMax = window.innerHeight; 
contentWidth=document.supertext.document.width 
contentHeight=document.supertext.document.height 
document.layers["supertext"].visibility = "show"; 
} 
setTimeout('moveBall()',400); 
if (hidetimer!='') 
setTimeout("hidetext()",hidetimer) 
} 
 
function moveBall() { 
if (superballRunning == true) { 
calculatePosition(); 
if (document.all) { 
document.all("supertext").style.left = xPos + document.body.scrollLeft; 
document.all("supertext").style.top = yPos + document.body.scrollTop; 
} 
else if (document.layers) { 
document.layers["supertext"].left = xPos + pageXOffset; 
document.layers["supertext"].top = yPos + pageYOffset; 
} 
animatetext=setTimeout('moveBall()',20); 
} 
} 
 
function calculatePosition() { 
if (xDir == "right") { 
if (xPos > (xMax - contentWidth - BallSpeed)) { 
xDir = "left"; 
} 
} 
else if (xDir == "left") { 
if (xPos < (0 + BallSpeed)) { 
xDir = "right"; 
} 
} 
if (yDir == "down") { 
if (yPos > (yMax - contentHeight - BallSpeed)) { 
yDir = "up"; 
} 
} 
else if (yDir == "up") { 
if (yPos < (0 + BallSpeed)) { 
yDir = "down"; 
} 
} 
if (xDir == "right") { 
xPos = xPos + BallSpeed; 
} 
else if (xDir == "left") { 
xPos = xPos - BallSpeed; 
} 
else { 
xPos = xPos; 
} 
if (yDir == "down") { 
yPos = yPos + BallSpeed; 
} 
else if (yDir == "up") { 
yPos = yPos - BallSpeed; 
} 
else { 
yPos = yPos; 
} 
} 
 
function hidetext(){ 
if (document.all) 
supertext.style.visibility="hidden" 
else if (document.layers) 
document.supertext.visibility="hide" 
clearTimeout(animatetext) 
} 
 
if (document.all||document.layers){ 
document.write('<span id="supertext"><nobr>'+thecontent+'</nobr></span>') 
window.onload = initializeBall; 
window.onresize = new Function("window.location.reload()"); 
} 
 
</script> 
 
</body>




ukázka:

www.tranceband.com/Czech/index
vynalezce
Profil
startmotor is not defined

ie to asi ignoruje a Mozilla hlasi chybu
Chamurappi
Profil
Reaguji na vynalezce:
ie to asi ignoruje
V Exploreru je událost onload přenastavená.


Reaguji na H.V.Pottara:
if (document.all||document.layers)
Vyhoď tuto podmínku. Kontroluje prohlížeč, omezuje funkčnost na Explorer a starý Netscape.
H.V.Pottar
Profil *
if (document.all||document.layers)
odstranil jsem to jak říkáš, ale v Mozille to stejnak nefunguje

vynalezce: "startmotor is not defined" toto v skriptu nevidim, jeto ten hlavní důvod proč to nejede?
vynalezce
Profil
mam funkcni obdobu
<html>
<head>
</head>
<body onload="inicializujobr()">
<img height="8" style="display:hidden" id="obrazek" src="http://tranceband.com/TBobrazky/ptak2.gif">
<script>
rychlostd=2;
rychlostl=2;
rychlost=50;
poziced=0;
pozicel=0;
function inicializujobr(){
obrazek.style.position="absolute";
obrazek.style.display="";
pohni=setInterval("pohniobrazkem()",rychlost);

}
function pohniobrazkem(){
poziced=poziced+rychlostd;
pozicel=pozicel+rychlostl;
obrazek.style.top=poziced;
obrazek.style.left=pozicel;
if(document.body.clientHeight<=(poziced+rychlostd+20) || document.body.clientWidth<=(pozicel+rychlostl+20)){
clearInterval("pohni");
obrazek.style.display="none";
}

}
</script>
</body>
</html>
H.V.Pottar
Profil *
vynalezce:

Týýbrdo jak si to udělal?? Jede to v obou prohlížečích jeto sice super, ale ten ptáček jakmile doletí pod menu tak se ztratí, předtím jsem to měl nastavený tak, že lítal pořád dokola a odrazoval ze stěn, nebo z boku, zkusím nato kdyžtak ještě přít, ale byl bych moc rád, kdybys poradil, jinak dik i za toto =)
H.V.Pottar
Profil *
tvým kódem ten obrázek zmizne, ukazka zde: http://www.tranceband.com/Czech/Zkouska/
vynalezce
Profil
tvým kódem ten obrázek zmizne
ja vim to melo bejt schvalne sem si myslel ze to ten kod ma delat

tady je kod

<html>
<head>
</head>
<body onload="inicializujobr()">
<img height="8" style="display:hidden" id="obrazek" src="http://tranceband.com/TBobrazky/ptak2.gif">
<script>
rychlostd=2;
rychlostl=2;
rychlost=20;
poziced=20+rychlostd;
pozicel=20+rychlostl;
function inicializujobr(){
obrazek.style.position="absolute";
obrazek.style.display="";
pohni=setInterval("pohniobrazkem()",rychlost);

}
function pohniobrazkem(){
poziced=poziced+rychlostd;
pozicel=pozicel+rychlostl;
obrazek.style.top=poziced;
obrazek.style.left=pozicel;


if(document.body.clientHeight<=(poziced+20+rychlostd)){
rychlostd=rychlostd*(-1);
}

if(document.body.clientWidth<=(pozicel+20+rychlostl)){
rychlostl=rychlostl*(-1);
}
if((pozicel-rychlostl-20)<=0 && rychlostl<0){
rychlostl=rychlostl*(-1);
}
if((poziced-rychlostd-20)<=0 && rychlostd<0){
rychlostd=rychlostd*(-1);

}
}
</script>
</body>
</html>
H.V.Pottar
Profil *
vynalezce: diki moc, ted' už jeto vono, akorat, bych byl moc rád za takovou maličkost, změna pozice, aby ten ptáček místo toho, aby letělo ze shora dolu aby letělo uplně ze zdola stránek nahoru stejným způsobem, šlo by to prosím? Jeto moje poslední prosba, zkoušel jsem to tam hledat, ale kromě rychlosti a vrchí pozice na ose x/y mi nejde toho ptačka umístit na dolním místě stránek aby to letělo nahoru
Chamurappi
Profil
Reaguji na vynalezce:
clearInterval("pohni");
Co by to mělo dělat? Argumentem pro clearInterval je číslo intervalu.

pohni=setInterval("pohniobrazkem()",rychlost);
Uvádět jako první argument setIntervalu řetězec je sice funkční, ale ošklivé. Čistší je dát tam funkci.


Reaguji na H.V.Pottara:
Jsou i účinnější způsoby, jak obtěžovat návštěvníka — můžeš mu třeba pustit hudbu, rozpohybovat text, rozblikat titulky, atd.
Proč sis vybral zrovna létajícího ptáka?
vynalezce
Profil
Jsou i účinnější způsoby, jak obtěžovat návštěvníka
nastavit to aby to letelo jen nad obrazkem nalevo tak to vypada hezky

dolním místě stránek aby to letělo nahoru

zmen toto:

radkek         
      7        rychlostd=2;          ->             rychlostd=-2;
      8        rychlostl=-2;          ->             rychlostl=-2;
     10       poziced=20+rychlostd;  ->     poziced=document.body.clientHeight-20;
     11       pozicel=20+rychlostl;     ->    pozicel=document.body.clientWidth-20;
H.V.Pottar
Profil *
vynalezce: nj jeto sice vono, ale ten pták nezačíná létat až "úplně ze zdola stránky", ale z poloviny (u loga) kterým příkazem nebo číslem bych mohl nastavit tak, aby to létalo až úplně ze zdola? ukázka: http://www.tranceband.com/Czech/index/

Chamurappi:

Proč sis vybral zrovna létajícího ptáka?

se mrkni na ukázku a uvidíš =) dodává to pocit, že je ta stránka živá

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0