Avatar billede ettig Nybegynder
17. november 2010 - 08:52 Der er 6 kommentarer og
1 løsning

Javascrips virker ikke i Firefox

Jeg er ved at pudse mit jule tema af til min PHP-Fusion side, så det er klar til den første december. Jeg har blandt andet lagt et Javascript ind, så der er dalende sne på siden. Men af en eller anden grund virker Javascriptet ikke i Firefox - det ser fint ud i IE.

Koden til scriptet ser således ud:

1.// seteaza numarul de fulgi (nu se recomanda mai mult de 30-40)2.var snowmax=393. 4.// seteaza culorile fulgilor.Puteti adauga cate culori vreti5.var snowcolor=new Array("#aaaacc","#ddddFF","#ccccDD")6. 7.// seteaza fonturile pentru fulgi. Si aici puteti adauga si alte fonturi daca vreti8.var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS")9. 10.// seteaza caracterul pentru fulgi (recomandat: *)11.var snowletter="*"12. 13.// seteaza viteza de cadere a fulgilor (valori recomandate: intre 0.3 to 2)14.var sinkspeed=0.615. 16.// seteaza dimensiunea maxima a fulgilor17.var snowmaxsize=5018. 19.// seteaza dimensiunea minima a fulgilor20.var snowminsize=2021. 22.// seteaza zona de cadere a fulgilor23.// 1 pentru cadere peste tot, 2 pentru stanga a ecranului24.// 3 pentru centru, 4 pentru dreapta ecranului25.var snowingzone=126. 27.///////////////////////////////////////////////////////////////////////////28.// AICI SE TERMINA PARTEA DE CONFIGURARE29.///////////////////////////////////////////////////////////////////////////30. 31. 32.// NU EDITATI ACESTE VALORI DE MAI JOS33.var snow=new Array()34.var marginbottom35.var marginright36.var timer37.var i_snow=038.var x_mv=new Array();39.var crds=new Array();40.var lftrght=new Array();41.var browserinfos=navigator.userAgent42.var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)43.var ns6=document.getElementById&&!document.all44.var opera=browserinfos.match(/Opera/)45.var browserok=ie5||ns6||opera46. 47.function randommaker(range) {48.rand=Math.floor(range*Math.random())49.return rand50.}51. 52.function initsnow() {53.if (ie5 || opera) {54.marginbottom = document.body.clientHeight55.marginright = document.body.clientWidth56.}57.else if (ns6) {58.marginbottom = window.innerHeight59.marginright = window.innerWidth60.}61.var snowsizerange=snowmaxsize-snowminsize62.for (i=0;i<=snowmax;i++) {63.crds[i] = 0;64.lftrght[i] = Math.random()*15;65.x_mv[i] = 0.03 + Math.random()/10;66.snow[i]=document.getElementById("s"+i)67.snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]68.snow[i].size=randommaker(snowsizerange)+snowminsize69.snow[i].style.fontSize=snow[i].size70.snow[i].style.color=snowcolor[randommaker(snowcolor.length)]71.snow[i].sink=sinkspeed*snow[i].size/572.if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}73.if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}74.if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}75.if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}76.snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)77.snow[i].style.left=snow[i].posx78.snow[i].style.top=snow[i].posy79.}80.movesnow()81.}82. 83.function movesnow() {84.for (i=0;i<=snowmax;i++) {85.crds[i] += x_mv[i];86.snow[i].posy+=snow[i].sink87.snow[i].style.left=snow[i].posx+lftrght[i]*Math.sin(crds[i]);88.snow[i].style.top=snow[i].posy89. 90.if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i])){91.if (snowingzone==1) {snow[i].posx=randommaker(marginright-snow[i].size)}92.if (snowingzone==2) {snow[i].posx=randommaker(marginright/2-snow[i].size)}93.if (snowingzone==3) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4}94.if (snowingzone==4) {snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2}95.snow[i].posy=096.}97.}98.var timer=setTimeout("movesnow()",50)99.}100. 101.for (i=0;i<=snowmax;i++) {102.document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")103.}104.if (browserok) {105.window.onload=initsnow106.}

Er der nogen der kan hjælpe med at få det til at virke i Firefox, da jeg selv ingen forstand har på Javascript?
Avatar billede Slettet bruger
17. november 2010 - 12:19 #1
Der er "linjenumre" i sourcen - de skal væk.
- og den er slet ikke forberedt på at der er noget som hedder "Firefox"
= halvgammel kode..?

Men så let slipper den ikke - Firefox (og Chrome) - er sådan cirka = ns6
Og så skal man tilføje "px" i enden, når man sætter style.left eller style.right
Med de smårettelser kom det sgu til at virke - og rimelig nice ovenikøbet:
<script>
var snowmax=39
var snowcolor=new Array("#aaaacc","#ddddFF","#ccccDD")
var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS")
var snowletter="*"
var sinkspeed=0.6
var snowmaxsize=50
var snowminsize=20
var snowingzone=1

var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array()
var crds=new Array()
var lftrght=new Array()
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=true //ie5||ns6||opera

function randommaker(range)
    {
    rand=Math.floor(range*Math.random())
    return rand
    }
function initsnow()
    {
    if (ie5 || opera)
        {
        marginbottom = document.body.clientHeight
        marginright = document.body.clientWidth
        }
    else
//        if (ns6)
            {
            marginbottom = window.innerHeight
            marginright = window.innerWidth
            }
    var snowsizerange=snowmaxsize-snowminsize
    for (i=0;i<=snowmax;i++)
        {
        crds[i] = 0
        lftrght[i] = Math.random()*15
        x_mv[i] = 0.03 + Math.random()/10
        snow[i]=document.getElementById("s"+i)
        snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
        snow[i].size=randommaker(snowsizerange)+snowminsize
        snow[i].style.fontSize=snow[i].size
        snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
        snow[i].sink=sinkspeed*snow[i].size/5
        if (snowingzone==1)
            snow[i].posx=randommaker(marginright-snow[i].size)
        if (snowingzone==2)
            snow[i].posx=randommaker(marginright/2-snow[i].size)
        if (snowingzone==3)
            snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4
        if (snowingzone==4)
            snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2
        snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)

        snow[i].style.left = snow[i].posx + "px"
        snow[i].style.top  = snow[i].posy + "px"

        }
    movesnow()
    }

function movesnow()
    {
    for (i=0;i<=snowmax;i++)
        {
        crds[i] += x_mv[i]
        snow[i].posy += snow[i].sink
        snow[i].style.left = snow[i].posx + lftrght[i] * Math.sin(crds[i]) + "px"
        snow[i].style.top  = snow[i].posy + "px"
        if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i]))
            {
            if (snowingzone==1)
                snow[i].posx=randommaker(marginright-snow[i].size)
            if (snowingzone==2)
                snow[i].posx=randommaker(marginright/2-snow[i].size)
            if (snowingzone==3)
                snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4
            if (snowingzone==4)
                snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2
            snow[i].posy=0
            }
        }
    var timer=setTimeout("movesnow()",50)
    }

for (i=0;i<=snowmax;i++)
    document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")

window.onload=initsnow

</script>

Hele ovenstående blok skal ligge i <head> sektionen.


Ekstra service: En komplet HTML-fil med det hele.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<script>
var snowmax=39
var snowcolor=new Array("#aaaacc","#ddddFF","#ccccDD")
var snowtype=new Array("Arial Black","Arial Narrow","Times","Comic Sans MS")
var snowletter="*"
var sinkspeed=0.6
var snowmaxsize=50
var snowminsize=20
var snowingzone=1

var snow=new Array()
var marginbottom
var marginright
var timer
var i_snow=0
var x_mv=new Array()
var crds=new Array()
var lftrght=new Array()
var browserinfos=navigator.userAgent
var ie5=document.all&&document.getElementById&&!browserinfos.match(/Opera/)
var ns6=document.getElementById&&!document.all
var opera=browserinfos.match(/Opera/)
var browserok=true //ie5||ns6||opera

function randommaker(range)
    {
    rand=Math.floor(range*Math.random())
    return rand
    }
function initsnow()
    {
    if (ie5 || opera)
        {
        marginbottom = document.body.clientHeight
        marginright = document.body.clientWidth
        }
    else
//        if (ns6)
            {
            marginbottom = window.innerHeight
            marginright = window.innerWidth
            }
    var snowsizerange=snowmaxsize-snowminsize
    for (i=0;i<=snowmax;i++)
        {
        crds[i] = 0
        lftrght[i] = Math.random()*15
        x_mv[i] = 0.03 + Math.random()/10
        snow[i]=document.getElementById("s"+i)
        snow[i].style.fontFamily=snowtype[randommaker(snowtype.length)]
        snow[i].size=randommaker(snowsizerange)+snowminsize
        snow[i].style.fontSize=snow[i].size
        snow[i].style.color=snowcolor[randommaker(snowcolor.length)]
        snow[i].sink=sinkspeed*snow[i].size/5
        if (snowingzone==1)
            snow[i].posx=randommaker(marginright-snow[i].size)
        if (snowingzone==2)
            snow[i].posx=randommaker(marginright/2-snow[i].size)
        if (snowingzone==3)
            snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4
        if (snowingzone==4)
            snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2
        snow[i].posy=randommaker(2*marginbottom-marginbottom-2*snow[i].size)

        snow[i].style.left = snow[i].posx + "px"
        snow[i].style.top  = snow[i].posy + "px"

        }
    movesnow()
    }

function movesnow()
    {
    for (i=0;i<=snowmax;i++)
        {
        crds[i] += x_mv[i]
        snow[i].posy += snow[i].sink
        snow[i].style.left = snow[i].posx + lftrght[i] * Math.sin(crds[i]) + "px"
        snow[i].style.top  = snow[i].posy + "px"
        if (snow[i].posy>=marginbottom-2*snow[i].size || parseInt(snow[i].style.left)>(marginright-3*lftrght[i]))
            {
            if (snowingzone==1)
                snow[i].posx=randommaker(marginright-snow[i].size)
            if (snowingzone==2)
                snow[i].posx=randommaker(marginright/2-snow[i].size)
            if (snowingzone==3)
                snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/4
            if (snowingzone==4)
                snow[i].posx=randommaker(marginright/2-snow[i].size)+marginright/2
            snow[i].posy=0
            }
        }
    var timer=setTimeout("movesnow()",50)
    }

for (i=0;i<=snowmax;i++)
    document.write("<span id='s"+i+"' style='position:absolute;top:-"+snowmaxsize+"'>"+snowletter+"</span>")

window.onload=initsnow

</script></head><body bgcolor="#123456" style="color:#FFAA00;">
<h1>Bjældeklang, bjældeklang</H1>
</body></html>
Avatar billede ettig Nybegynder
17. november 2010 - 15:18 #2
Da det er en PHP-Fusion side jeg arbejder med, ligger jeg scriptet op i en .js fil, og har så indsat en henvisning til scriptet i theme.php (koden ser således ud: echo "<script type='text/javascript' src='".THEME."/SnowScript.js'></script>";]. Men efter jeg har lagt det nye script ind, så vises der slet ingen sne på siden, hverken i IE eller Firefox.
Avatar billede Slettet bruger
17. november 2010 - 16:05 #3
Prøv lige at teste "blok2" i dit miljø (browser).
- virker det, bør det også virke inkluderet. Hvis ikke, er der "noget andet" galt..

Måske at du overskriver window.onload på et senere tidspunkt ?
- eller den globale variabel timer ?
Avatar billede ettig Nybegynder
17. november 2010 - 18:24 #4
"blok2" virker når jeg uploader den som html dokument, dog ser den vidt forskellig ud i IE og Firefox - du kan evt. se det her http://prinzmetal.dk/sne.html
Avatar billede Slettet bruger
17. november 2010 - 19:15 #5
Sorry, jeg HAR ingen iE (længere).
Avatar billede webweaver Praktikant
18. november 2010 - 02:01 #6
Det må man nok sige! Same here.. Ubrugeligt i IE :S
Avatar billede webweaver Praktikant
18. november 2010 - 02:07 #7
Jeg har lige prøvet at smide scriptet ind på et site selv, for at teste det, og der er ikke i samme grad forskel på effekten i IE og FF. Der er dog stadig forskel. (snefnuggene er større i IE end i FF - for store næsten)

Men det andet link som blev postet herinde, der er den helt gal i IE hos mig.
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