Avatar billede andreas134 Nybegynder
11. november 2010 - 15:46 Der er 30 kommentarer og
1 løsning

Onload

hej jeg arbejder i et CMS system hvor jeg ikke har adgang til at skrive i selve koden tagget. Men kun adgang til at upload: billeder, css filer og js filer.
og jeg vil gerne køre det her script når siden loader.

var images=Array("url(pic1.png)","url(pic2.png)","url(pic3.png)","url(pic4.png)","url(pic5.png)");
document.getElementById("Header").style.backgroundImage=images[Math.round(Math.random()*2)];

mit problem er så at der står en onLoad attribut i body tagget og det er min erfaring at man ikke kan bruge window.onload når der står onLoad i body tagget. det virker i vert fald ikke. De filer man kan hentes mellem <head></head>

håber i forstår problemet og at der er nogen der har en løsning.
Avatar billede Slettet bruger
11. november 2010 - 16:35 #1
Jeg kan altså godt få udført både <body onload> og window.onload
Prøv denne test i dit "miljø"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><script>

var que = "Starter NU"

function winLoad() { que += "\nwindow klar NU" }
window.onload = winLoad()

function bodyLoad() { que += "\nbody klar NU" }
</script></head><body onload="bodyLoad()">

<a href="java script:alert(que)">vis que</a>

</body></html>
Avatar billede andreas134 Nybegynder
11. november 2010 - 17:38 #2
Du har fuldstændig ret i at man kan køre begge, men lige med det her script virker det ikke. Men jeg tror lige jeg har fundet problemet. Det er måske fordi den DIV ikke er blevet loadet før scriptet. får hvis jeg flytter det ned under DIV'en så virker det perfekt. ved du om der er en 'event' til når et bestemt element bliver loadet?
Avatar billede andreas134 Nybegynder
11. november 2010 - 17:39 #3
beklager skrivefejl :)
Avatar billede bkp Nybegynder
11. november 2010 - 18:02 #4
Har dit cms en reference til jQuery?

Men jQuery er det en smal sag at tilføje events til næsten hvad som helst.

Se mere her: http://docs.jquery.com/Tutorials:Introducing_$(document).ready()

Hvis du har lyst til at prøve jQuery, kræver det kun denne ene linie i din header sektion:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>


Herefter kan du nemt scripte dig til en event der køres når hele siden er klar til det:
<script type="text/javascript">
$(document).ready( function() {
  // Skriv koden her som skal køre når siden er klar.
});
</script>


Se desuden denne lille tutorial:
http://www.authenticsociety.com/blog/jQueryPluginTutorial_Beginner

Og denne:
http://bkristensen.tumblr.com/post/998469255/jquery-hvor-skal-jeg-starte
Avatar billede intenz Novice
11. november 2010 - 19:26 #5
#4
Rimelig overkill at inkludere jquery bare for en onload kommando, der i forvejen er standard i javascript.

Den alm. ser sådan ud:
window.onload = function() {
  // Skriv koden her som skal køre når siden er klar.
};
Avatar billede bkp Nybegynder
11. november 2010 - 19:42 #6
Enig i det tilfælde at han kun skal skrive ganske lidt javascript, men læg mærke til at jeg spurgte om jQuery allerede var inkluderet :-)

Desuden synes jeg det er overdrevent at nævne jQuery som overkill da rigtig mange sider i dag allerede har en reference til samme fil, så biblioteket ligger sansynligvis allerede hos surferen, så det koster intet i trafik. Desuden fylder den ikke så meget og så er det en gave til os udviklere som forenkler vores scripts væsentlig idet at man ikke skal tage forholdsregler for om koden skal laves anderledes hvis det er firefox eller explorer o.s.v.
Avatar billede intenz Novice
11. november 2010 - 20:11 #7
Jeg er helt enig i fordelene med jquery.

Det er dog ikke nødvendigvis korrekt, at brugerne allerede har det i cachen. Browseren cacher efter URL'en, ikke filen. Hvis den ligger to forskellige domæner, vil din browser hente filen to gange. Du vil have to forskellige kopier liggende på computeren, på trods af indholdet af filen er det samme.
Det er også er en af de absolutte fordele ved at referere til Google's kopi, der kan man nemmere at argumentere for det.
http://code.google.com/intl/da-DK/apis/libraries/devguide.html#jquery

Herudover skal browseren parse jquery hver gang. Det vil altid koste nogle ekstra millisekunder i load tiden. Men det er typisk uden den store betydning.

Men jeg er enig i, at hvis det allerede ligger der, kan det sagtens bruges.
Avatar billede bkp Nybegynder
11. november 2010 - 20:50 #8
Fuldstændig enig, alt det er jeg helt klar over, og det er også derfor mit forslag netop gik ud på at linke til googleapis ;-)

https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
Avatar billede andreas134 Nybegynder
11. november 2010 - 20:54 #9
#4

Jeg havde selv tænkt på at bruge jQuery, men det er ikke inkluderet i CMS systemet. Men efter som der ikke er andre muligheder, så tror jeg det bliver løsningen.

#5

Hvis du havde læst: hele mit spørgsmål, #1 og #2 så vidste du at din løsning ikke virker.
Avatar billede bkp Nybegynder
11. november 2010 - 20:54 #10
Har selv skrevet en guide om emnet hvor jeg netop påpeger det samme ;-)

http://www.eksperten.dk/guide/1385
Avatar billede bkp Nybegynder
11. november 2010 - 20:58 #11
Min sidste kommentar var til #7 :-)
Avatar billede intenz Novice
11. november 2010 - 21:17 #12
#9
Så forstår jeg ikke hvad det du forsøger på?

Fra #2:
"Det er måske fordi den DIV ikke er blevet loadet før scriptet. får hvis jeg flytter det ned under DIV'en så virker det perfekt"

Ligger den DIV ikke 'hardcoded' i HTML koden?
Eller laver du den 'dynamisk' gennem javascript efter siden er hentet (og onload eventen kørt)?
Avatar billede intenz Novice
11. november 2010 - 21:18 #13
#8
Ja, det kan jeg da godt se. Ved ikke hvordan jeg ikke lagde mærke til det :)
Avatar billede andreas134 Nybegynder
11. november 2010 - 22:36 #14
#12
jo den ligger i html'en jeg testede bare lige på en lokal fil.

jeg ved godt det var lidt dumt forklaret

#8
jeg har kun mulighed for at uploade filer og har desværre slet ikke mulighed for at skrive i head som du foreslår.
Avatar billede andreas134 Nybegynder
12. november 2010 - 14:26 #15
vil i have point?
Avatar billede bkp Nybegynder
13. november 2010 - 01:08 #16
Du bestemmer hvem der skal have point.
Avatar billede andreas134 Nybegynder
19. november 2010 - 15:57 #17
Jeg har fundet ud af at der er et script faktisk det her.

<script src="/js/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>

Men det er ligesom om jeg ikke kan få "forbindelse" til det. Der er også nogle andre scripts. Kan det have noget med det at gøre eller skal man skrive noget specielt for at få "forbindelse" til det?
Avatar billede bkp Nybegynder
19. november 2010 - 18:24 #18
Hvad mener du med forbindelse?
Avatar billede andreas134 Nybegynder
20. november 2010 - 10:25 #19
Hvis jeg nu skriver følgende i en fil, så sker der ikke noget.

$(document).ready(function(){

});


Selvfølgelig det der står i mellem virker ikke;)
Det er det jeg mener med "forbindelse"
Avatar billede bkp Nybegynder
20. november 2010 - 10:45 #20
Har du prøvet at debug, for at se hvor det går galt?

Prøv med Firefox + firebug, den kan hurtigt vise dig problemerne.

Se mere her:
http://getfirebug.com/javascript
http://getfirebug.com/errors
http://getfirebug.com/html
Avatar billede andreas134 Nybegynder
20. november 2010 - 11:16 #21
den siger/skriver at denne her funktion ikke er en funktion

$(document).ready(function()
Avatar billede bkp Nybegynder
20. november 2010 - 11:30 #22
Er din side online, vil gerne kigge lidt på det ;-)
Avatar billede andreas134 Nybegynder
20. november 2010 - 12:03 #23
jeg har sendt en intern besked :)
Avatar billede bkp Nybegynder
20. november 2010 - 13:50 #24
Jeg har debugget din side lidt, og jeg kan se at istedet for at gå ind i jQuery filen går den ind i prototype.js.
Der er godt nok mange referencer til en del biblioteker, og jeg er bange for at det er lige rigeligt, jeg ville (hvis det er muligt) forsøge at begrænse mit valg til nogle få gode biblioteker, for det her er lidt uoverskueligt med alle disse referencer, og jeg tror det er grunden til at det går galt.

Prototype er det bibliotek man brugte meget førhen, men jQuery har overhalet den med flere meter, så jeg ville omskrive det script der er skrevet til prototype så det kører i jQuery og så fjerne referencen.

Se lidt om forskelle her:
http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison
Avatar billede bkp Nybegynder
20. november 2010 - 13:55 #25
Kom lige i tanke om at du selvfølgelig kan explicit fortælle fortolkeren at det er jQuery du skal have fat i ved at skrive jQuery istedet for $, så prøv at skrive dette, og se om det løser problemet.
jQuery(document).ready(function() {
  // her kommer din kode
});
Avatar billede bkp Nybegynder
20. november 2010 - 13:58 #26
Men alligevel vil jeg anbefale at få ryddet op i dine resourcer, der er efter min mening et overload af unødvendige referencer, men hvis det er et design der er styret af et cms, så kan det nok ikke lade sig gøre ;-)
Avatar billede andreas134 Nybegynder
20. november 2010 - 14:14 #27
#25 var lige præsis hvad jeg var ude efter tak! det virker mange tak!

Og med hensyn til at rydde op så er jeg desværre ikke selv herre over hvilke referencer der er som du også selv siger :)

Tak endnu en gang. Tak tak tak du får point med det samme
Avatar billede bkp Nybegynder
20. november 2010 - 16:58 #28
Glad for det blev løst, ja det slog mig lige at $ bliver assignet til både jQuery og Prototype, så det var grunden til at det gik galt.

Men tjek lige denne statistik, den viser klart hvordan de andre kendte biblioteker ikke kan følge med jQuery's popularitet ;-)

http://www.google.com/trends?q=dojo+javascript,+jquery+javascript,+yui+javascript,+prototype+javascript,+mootools+javascript&ctab=0&geo=all&date=all&sort=1
Avatar billede bkp Nybegynder
20. november 2010 - 17:00 #29
Hmm, lægger lige et forkortet link: http://goo.gl/2B3E
Avatar billede Slettet bruger
20. november 2010 - 17:52 #30
Havde helt glemt "trends" : )

Øl v Vin
Vin er mere populært end øl (eller: vinpimpere snakker meget om vin)
- enorme vin-spikes omkring jul - slet ingen for øl ?

C++ v C#
- C++ taber terræn til C# - nu lige "trendy"

Kina v Indien
- Nå, det var en overraskelse!

Tits v Ass
- Klar udvikling: Røven løber fra brysterne. (fordi den er god at sparke til)

Danmark v Sverige
- kan nogen huske cartoon-krisen ? (Ja, Google)
Avatar billede bkp Nybegynder
20. november 2010 - 18:28 #31
He he
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