Avatar billede donslund Nybegynder
06. september 2005 - 15:23 Der er 16 kommentarer og
1 løsning

Lysavis der ikke opfører sig ens

Jeg har en lysavis der starter hvor dn slap ved reload. Det virker perfekt på min egen maskine, men så snart den kommer ud på webhotelet, så virker den ikke mere. Så starter den forfra hver gang.

Hvorfor mon?

Kode:
<html>
<head>
<script LANGUAGE="javascript">
var action;
var Glides=4;
var curGlide=0;
var lysavis=false;
var StartPos=250;
var docCookie=""+document.cookie;
if (docCookie!="") {
    docCookie=docCookie.split(";");
    for (i=0;i<docCookie.length;i++)
        docCookie[i]=docCookie[i].split("=");
    for (i=0;i<docCookie.length;i++)
        if (docCookie[i][0]=="Lysavis") {
            StartPos=parseInt(docCookie[i][1],10);
            if (isNaN(StartPos))
                StartPos=250;
        }
}

function ScrollMessage() {
    lysavis=document.all.lysAvisen;
    lysavis.style.pixelLeft = StartPos;
    action = window.setInterval("Glide()",60);
}

function Glide() {
    lysavis.style.pixelLeft -= 2;
    if (lysavis.style.pixelLeft<=0-lysavis.clientWidth-10) {
        lysavis.style.pixelLeft=250;
        curGlide++;
        if (curGlide>=Glides) {
            window.clearInterval(action);
            lysavis.style.visibility = "hidden";
        }
    }
    document.cookie="Lysavis="+lysavis.style.pixelLeft;
}
</script>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" onload="ScrollMessage()">
<div ID="lysavisContainer" style="position:absolute;top:10;left:50;width:250;height:30;overflow:hidden"><div id="lysAvisen" style="position:absolute;left:250;top:0;"><pre id="Teksten" name="Teksten" style="font-family:Arial;color:#A1B7D1;font-weight:bold;">Nyt Søholm prøvehus ved Bella Center........  Attraktive strandgrunde til salg....... Tilbud på Reersø prøvehus.....  </pre></div></div>
</body>
</html>
Avatar billede roenving Novice
06. september 2005 - 15:48 #1
Prøv at sætte udløbstid på kagen:

    var exp = new Date(new Date().getTime() + 1000);
    document.cookie="Lysavis="+lysavis.style.offsetLeft + ";expires=" + exp.toGMTString();

-- iøvrigt bruger den i vidt omfang IE-only ting, i den ovenstående har jeg ændret pixelLeft til offsetLeft, det og document.all skal du ændre, hvis du vil have den til at virke andre steder !-)

-- og så bliver det:

<html>
<head>
<script type="text/javascript">
var action;
var Glides=4;
var curGlide=0;
var lysavis=false;
var StartPos=250;
var docCookie=""+document.cookie;
if (docCookie!="") {
    docCookie=docCookie.split(";");
    for (i=0;i<docCookie.length;i++)
        docCookie[i]=docCookie[i].split("=");
    for (i=0;i<docCookie.length;i++)
        if (docCookie[i][0]=="Lysavis") {
            StartPos=parseInt(docCookie[i][1],10);
            if (isNaN(StartPos))
                StartPos=250;
        }
}

function ScrollMessage() {
    lysavis=document.getElementById('lysAvisen');
    lysavis.style.left = StartPos + "px";
    action = window.setInterval("Glide()",60);
}

function Glide() {
    lysavis.style.left = lysavis.offsetLeft - 2 + "px";
    if (lysavis.offsetLeft<=0-lysavis.offsetWidth-10) {
        lysavis.style.left="250px";
        curGlide++;
        if (curGlide>=Glides) {
            window.clearInterval(action);
            lysavis.style.visibility = "hidden";
        }
    }
    var exp = new Date(new Date().getTime() + 1000);
    document.cookie="Lysavis="+lysavis.offsetLeft + ";expires=" + exp.toGMTString();
}
</script>
<title>Lysavis</title>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" onload="ScrollMessage()">
<div ID="lysavisContainer" style="position:absolute;top:10;left:50;width:250;height:30;overflow:hidden"><div id="lysAvisen" style="position:absolute;left:250;top:0;"><pre id="Teksten" name="Teksten" style="font-family:Arial;color:#A1B7D1;font-weight:bold;">Nyt Søholm prøvehus ved Bella Center........  Attraktive strandgrunde til salg....... Tilbud på Reersø prøvehus.....  </pre></div></div>
</body>
</html>

-- den forsvandt dog, når jeg satte en doctype på, den må jeg lige kigge på !-)
Avatar billede roenving Novice
06. september 2005 - 15:51 #2
-- det er selvfølgelig fordi der skal enheder på style-længder, så indsæt denne før html-tagget:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

-- og ændre selve lysavisen til:

<div ID="lysavisContainer" style="position:absolute;top:10px;left:50px;width:250px;height:30px;overflow:hidden"><div id="lysAvisen" style="position:absolute;left:250px;top:0;"><pre id="Teksten" name="Teksten" style="font-family:Arial,sans-serif;color:#A1B7D1;font-weight:bold;">Nyt Søholm prøvehus ved Bella Center........  Attraktive strandgrunde til salg....... Tilbud på Reersø prøvehus.....  </pre></div></div>

-- så virker den i alle mine browsere !-)
Avatar billede donslund Nybegynder
07. september 2005 - 09:36 #3
Ja, den virker også i browserne hos mig, men ikke ude på nettet. Kun når filen ligger lokalt. Kan jeg ikke med en alert tjekke om cookie'en er sat?
Avatar billede donslund Nybegynder
07. september 2005 - 09:43 #4
På min side sættes der også en anden værdi i document.cookie. Så Lysavis sættes som værdi nummer 2. Men tjekker min kode ikke for det?
Avatar billede donslund Nybegynder
07. september 2005 - 10:16 #5
Denne linie: if (docCookie[i][0]=="Lysavis") { får den ikke fat i. Selvom værdien "lysavis" er til stede, så opdager den det ikke.
Avatar billede roenving Novice
07. september 2005 - 10:33 #6
Hvordan ser den anden værdi ud, kan der være problemer med specialtegn eller noget ?-)
Avatar billede donslund Nybegynder
07. september 2005 - 10:36 #7
Det er en ASP.NET_sessionid. Der er ingen specialtegn. Jeg kan godt få den til at alert'e de 2 værdier ud. Og der står også Lysavis=220 exempelvis, men den start forfra alligevel.
Avatar billede roenving Novice
07. september 2005 - 10:45 #8
Kunne du prøve at linke ?-)
Avatar billede donslund Nybegynder
07. september 2005 - 10:51 #9
Avatar billede roenving Novice
07. september 2005 - 11:09 #10
Virker det heller ikke med udløbstiden, for ved min test var det nødvendigt at sætte den til over 100 i IE og FF, mens Opera kunne nøjes med de 100 millisekunder (jeg testede mig så ikke frem til et bestemt tal, men satte bare et 0 mere på, da det egentlig ikke betyder noget særligt !-)
Avatar billede donslund Nybegynder
07. september 2005 - 11:18 #11
Nu er udløbstiden sat til igen. Det er, for mig at se, samme resultat.
Jeg har smidt en alert på. jeg fatter det ikke.
Avatar billede roenving Novice
07. september 2005 - 11:22 #12
Der er jo mellemrum efter semikolonnet, prøv at fjerne det, for det behandles jo som en lang streng !-)
Avatar billede roenving Novice
07. september 2005 - 11:23 #13
-- eller lav linjen med genkendelsen af cookie-navnet om til:

        if (docCookie[i][0].indexOf("Lysavis")>-1) {
Avatar billede donslund Nybegynder
07. september 2005 - 12:00 #14
Det virker jo, bortset fra, at det ikke er hver gang der er en Lysavis sat i cookien.
Kan jeg bare fjert udløstiden? Det prøver jeg lige.
Avatar billede donslund Nybegynder
07. september 2005 - 12:35 #15
Så skulle det vist være på plads. Det ville da være mærkeligt, om ikke der skulle falde lidt point nu.

Smider du et svar?

Tak for hjælpen.
Avatar billede roenving Novice
07. september 2005 - 12:41 #16
Velbekomme '-)
Avatar billede roenving Novice
08. september 2005 - 13:19 #17
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester