Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:14 Der er 25 kommentarer og
1 løsning

Body onload spørgsmål

Jeg har følgende:

<body onload="updateChart01Top(); setInterval('updateChart01Top()', 600000)">

Det kører fint i Internet Explorer, men i Firefox sker der intet - nogen der kan have en idé?
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:21 #1
Hvad siger fejlkonsollen?
Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:26 #2
Den siger:
chartObj.setDataURL is not a function - linje 25

Men det er den nu, for den bruges fint andre steder.
Avatar billede w13 Novice
12. september 2008 - 13:35 #3
Prøv at vise din linje 25 så.
Avatar billede w13 Novice
12. september 2008 - 13:36 #4
Eller bare mere af koden.
Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:37 #5
I Opera's fejlkonsol får jeg:

JavaScript - http://localhost:8080/info/kvalitet/
Event thread: load
Error:
name: TypeError
message: Statement on line 25: Type mismatch (usually non-object value supplied where object required)
Backtrace:
  Line 25 of linked script http://localhost:8080/info/kvalitet/inc/updateCharts.js: In function updateChart01Top
            chartObj.setDataURL("inc/xml/hoOverview.php?getDay="+decInt);
  Line 1 of function script
    updateChart01Top(); setInterval('updateChart01Top()', 6000)
  ...
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'

Funktionen den kalder er:

function updateChart01Top(ho){
    var chartObj = getChartFromId("chart1Id");
    chartObj.setDataURL("inc/xml/hoOverview.php");
}
Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:39 #6
Det vil sige den kører heller ikke i Opera.
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:40 #7
Der er noget galt med din kode, og det kan være flere ting. Et hurtigt skud: har du noget med id="char1Id" ?
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:41 #8
id="chart1Id"
Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:41 #9
Det har jeg ja, den refererer til følgende:

var chart1 = new FusionCharts("inc/FusionCharts/MSStackedColumn2DLineDY.swf", "chart1Id", "850", "300", "0", "1");
chart1.setDataURL("inc/xml/hoOverview.php");
chart1.render("chart1div");
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:43 #10
Jeg ved ikke hvad din getChartFromId("chart1Id") laver, men det kunne da tyde på, at den ikke kan finde den. Jeg ved heller ikke hvad din FusionCharts laver.
Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:44 #11
Den kan sagtens finde den, for den bliver brugt i sammenhæng med en anden funktion.

www.fusioncharts.com
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:45 #12
Avatar billede allanhansendk Nybegynder
12. september 2008 - 13:50 #13
Neeej, det har jeg allerede, hvis du tænker på forskellige ID'er.
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:56 #14
Så put en

  alert(charObj);

ind for at se hvad FF og Opera finder eller ikke finder.
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:57 #15
Jeg kan sle ikke ramme -er i dag...
Avatar billede erikjacobsen Ekspert
12. september 2008 - 13:57 #16
Jeg kan sleT ikke ramme T-er i dag...
Avatar billede allanhansendk Nybegynder
12. september 2008 - 14:00 #17
Den giver: [object HTMLEmbedElement]

Og har prøvet at ligge den på andre der bruger samme, og de skyder samme boks ud, med samme tekst.
Avatar billede allanhansendk Nybegynder
12. september 2008 - 14:01 #18
Internet Explorer skriver: [object]
Opera skriver: [object HTMLEmbedElement]
Avatar billede erikjacobsen Ekspert
12. september 2008 - 14:02 #19
Det bør nok være sådan en. Den siger ca. det samme i IE?

Lad os udelukke et timing problem. Prøv

<body onload="setInterval('updateChart01Top()', 10000)">

og vent 10 sekunder.
Avatar billede erikjacobsen Ekspert
12. september 2008 - 14:04 #20
Endelig er der nemme løsning. Brug ikke getChartFromId, men gør din variabel fra oprettelse global: chart1 - og brug den.
Avatar billede allanhansendk Nybegynder
12. september 2008 - 14:08 #21
Jeg kunne give dig et dejligt stort kram. Sådan et rigtig fredagskram. :D

Efter at have fjernet updateChart01Top(); fra foran setInterval kører det som det skal.

Din kode: <body onload="setInterval('updateChart01Top()', 10000)">
Min kode: <body onload="updateChart01Top(); setInterval('updateChart01Top()', 600000)">

Men kan du fortælle mig hvorfor det virker? Smid ihvertfald et svar, så skal du blive belønnet.
Avatar billede erikjacobsen Ekspert
12. september 2008 - 14:10 #22
Så er det et timing problem - det hjælper at vente i 10 sekunder i FF og Opera. Du skal nok sætte den op til 600 sekunder, som du havde oprindeligt.

FF og Opera kan vælge at sige at siden er færdig-loadet, selv om en Flash ikke er. Jeg gætter.

Øhm, gem krammet til en anden ;)
Avatar billede erikjacobsen Ekspert
12. september 2008 - 14:11 #23
Og jeg samler slet ikke på point, tak. Jeg antager w13 også vil acceptere at du svarer selv, og accepterer dit eget svar.
Avatar billede allanhansendk Nybegynder
12. september 2008 - 14:14 #24
Men ret skal være ret, jeg havde jo ikke fundet løsningen hvis ikke du havde forslået koden.
Avatar billede w13 Novice
12. september 2008 - 18:28 #25
Heller ikke til mig, tak. :)
Avatar billede allanhansendk Nybegynder
27. november 2008 - 11:12 #26
Stædige bæster. :) Så lukker jeg spørgsmålet.
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