E eas Medlem sedan sep. 2001 269 inlägg Trådstart 6 nov. 2001 18:51 #1 Är det nån smart typ som förstår varför denna kod inte funkar?
<script>
lasare=navigator.appName;
if (lasare=="Microsoft Internet Explorer"){
hojd=document.body.clientHeight;
bredd=document.body.clientWidth;
}
else if (lasare=="Netscape"){
hojd=window.innerHeight;
bredd=window.innerWidth;
}
</script>
J Jojoxx Medlem sedan juni 2000 4 308 inlägg Krockar det med något annat script? Ser inget direkt fel i denna kod, och det funkar i Netscape 4, Mozilla 0.9.5 och Internet Explorer 5.5 (de webbläsare jag har installerade).
E eas Medlem sedan sep. 2001 269 inlägg Jag tänkte att jag skulle fixa så att ett lager alltid kom i mitten oavsett vilken storlek få fönstret man har.
Här är hela koden:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
lasare=navigator.appName;
if (lasare=="Microsoft Internet Explorer"){
hojd=document.body.clientHeight;
bredd=document.body.clientWidth;
}
else if (lasare=="Netscape"){
hojd=window.innerHeight;
bredd=window.innerWidth;
}
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<!--
<div style="position:absolute; top:200px; left:200px">
<img src="start.gif" width="58" height="15"><img src="filarkiv.gif" width="58" height="15"><img src="upload.gif" width="58" height="15"><img src="info.gif" width="58" height="15">
</div>
-->
<script>
v_fonster=(bredd-286)/2;
t_fonster=(hojd-167)/2;
document.write('<div style="position:absolute; top:'+v_fonster+'px; left:'+t_fonster+'px">'+
'<img src="fonster.gif" width="286" height="167">'+
'</div>');
</script>
</body>
</html>
J Jojoxx Medlem sedan juni 2000 4 308 inlägg Börja med att flytta ner första script-blocket under <body>-elementet. Annars kommer Internet Explorer att tycka att objektet document.body inte finns, eftersom det inte blivit skapat än.
Sedan skulle jag använda;
v_fonster=Math.round((bredd-286)/2);
t_fonster=Math.round((hojd-167)/2);
för att se till att du inte får några decimaltal som svar. Blir inge bra om du försöker placera lagret på halv pixel
Till sist skulle jag välja att skapa lagret med ren html-kod och sedan flytta det med JavaScrip till rätt plats. Då kommer det även att funka i Netscape 4.x.
E eas Medlem sedan sep. 2001 269 inlägg Tack!
Jag gjorde som du så och flyttade ner scriptet som kollar browsern under body och det funkade fin!!!
Sen ändrade jag det andra scriptet till
<div id=fonster style="position:absolute">
<img src="fonster.gif" width="286" height="167">
</div>
<script>
v_fonster=Math.round((bredd-286)/2);
t_fonster=Math.round((hojd-167)/2);
fonster.style.left=v_fonster;
fonster.style.top=t_fonster;
</script>
Det funkar på min dator.
Vet du vad jag kan göra för att få med mig typ Netscape?
J Jojoxx Medlem sedan juni 2000 4 308 inlägg Ta en titt på funktionen moveLayerAbs() på denna sida .
E eas Medlem sedan sep. 2001 269 inlägg hmm....
Inte helt perfekt
Vill inte verka tjatig men grjerna flyttar sig inte alls.
document.all[...].style är null eller inte ett objekt, du vet?
Hela min kod med din funktion som jag har lagt in och döpt om till flyttaLager!
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
/* Layerlib.js Version 2.1
Följande funktioner är skrivna av Johan Johansson
och är fria att användas så länge som dessa rader
står kvar i omodifierade.
[url="http://www.jojoxx.net"]http://www.jojoxx.net[/url] -*- 2001-09-30 */
function flyttaLager(Id,x,y){
if (document.all){
if (x) document.all[Id].style.left = x;
if (y) document.all[Id].style.top = y;
} else if (document.layers){
if (x) document.layers[Id].left = x;
if (y) document.layers[Id].top = y;
} else if (document.getElementById){
if (x) document.getElementById(Id).style.left = x+'px';
if (y) document.getElementById(Id).style.top = y+'px';
}
}
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" background="bg.gif" onresize="location.reload()">
<script>
lasare=navigator.appName;
if (lasare=="Microsoft Internet Explorer"){
hojd=document.body.clientHeight;
bredd=document.body.clientWidth;
}
else if (lasare=="Netscape"){
hojd=window.innerHeight;
bredd=window.innerWidth;
}
</script>
<!-- MENY -->
<div id=meny style="position:absolute">
<img src="start.gif" width="58" height="15"><img src="filarkiv.gif" width="58" height="15"><img src="upload.gif" width="58" height="15"><img src="info.gif" width="58" height="15">
</div>
<script>
v_meny=Math.round((bredd-240)/2);
t_meny=Math.round((hojd-197)/2);
flyttaLager(meny,v_meny,t_meny);
</script>
<!-- SLUT PÅ MENYN -->
<!-- FÖNSTRET -->
<div id=fonster style="position:absolute">
<img src="fonster.gif" width="286" height="167">
</div>
<script>
v_fonster=Math.round((bredd-286)/2);
t_fonster=Math.round((hojd-167)/2);
flyttaLager(fonster,v_fonster,t_fonster);
</script>
<!-- SLUT PÅ FÖNSTRET -->
<!-- SCROLLGREJER -->
<div id=upp style="position:absolute"> <img src="upp.gif" width="11" height="8">
</div>
<div id=ner style="position:absolute"> <img src="ner.gif" width="11" height="8">
</div>
<script>
v_upp=Math.round((bredd+246)/2);
t_upp=Math.round((hojd-163)/2);
v_ner=Math.round((bredd+246)/2);
t_ner=Math.round((hojd+120)/2);
flyttaLager(upp,v_upp,t_upp);
flyttaLager(ner,v_ner,t_ner);
</script>
<!-- SLUT PÅ SCROLLGREJER -->
</body>
</html>
J Jojoxx Medlem sedan juni 2000 4 308 inlägg flyttaLager(fonster,v_fonster,t_fonster);
Här måste du sätta "fonster" inom citat-tecken. Annars blir det ett variabelnamn. (och motsvarande på de andra ställena).
E eas Medlem sedan sep. 2001 269 inlägg Oppps
Tänkte inte på det
när man anropar en funktion typ.
function dolj(id){
id.style.display="";
}
Så behöver man ju inte det!
Iallafall tack det djupast för din hjälp, du är underbar
J Jojoxx Medlem sedan juni 2000 4 308 inlägg Det är då för att id då ses som ett objekt istället för en variabel. Lite småkrångligt
E eas Medlem sedan sep. 2001 269 inlägg Nu är det natti natti för min del!