Avatar billede dugi Nybegynder
26. januar 2005 - 23:44 Der er 23 kommentarer og
1 løsning

Onload vil ikke virker - MEGET MYSTISK!

Hej Eksperter.

Tror jeg har Ekspertens mest hidtil mystiske spørgsmål.
Hvordan kan det være min script ikke vil virke når jeg bruger OnLoad, men godt vil hvis jeg ikke bruger OnLoad?

Alt andet JS virker på min side, undtagen hvis jeg skal bruge OnLoad.

Nogle som har oplevet dette før?
For man kan da ikke gøre noget for at deaktivere OnLoad vel? :o


Please hjælp mig!
På forhånd tusind mange gange tak

MVH
Morten Rugaard
Avatar billede softspot Forsker
26. januar 2005 - 23:52 #1
Inkluderer du andre scripts som evt. kobler sig på onload eller har du inpage script som håndterer onload-eventet?
Avatar billede roenving Novice
26. januar 2005 - 23:56 #2
Det kommer sågu' an på, hvad du forsøger at udføre i din onload ...

Hvis du f.eks. forsøger at lave en window.open er der ikke een eneste nutidig browser, som vil tillade udførelsen, uden at brugeren explicit tillader det (enten via browser-indstillinger eller fra en alert !-)
Avatar billede dugi Nybegynder
26. januar 2005 - 23:59 #3
jeg har et script som kører i en .js fil, den bruger dog ikke onload - men det virker dog, derfor jeg syntes det er underligt at alt andet ik virker :o

Denne funktion jeg hentyder til, er et script som ligger mellem </head> og <body> og blir onloaded som en funktion.

Men på alle andre sites jeg har brugt det script, der virker det - og det er ren C/P fra et gammelt site, som jeg med garanti ved virker!
Avatar billede dugi Nybegynder
27. januar 2005 - 00:03 #4
Min 01.js:

function reply(replyid, username, userid)
{
  var replywho = document.getElementById("replywho");
  var replytxt = "- Svar på kommentar #" + replyid +" af <a href=\"\"><span class=\"fakelink\">" + username + "</span></a>";
  replywho.innerHTML = replytxt;

  document.tilfoejkommentar.replyid.value = replyid;
  document.tilfoejkommentar.focushelp.focus();
}


Mit script i dokumentet:

<script>
function time()
{
  var mydate=new Date();
  var hours=mydate.getHours()
  var minutes=mydate.getMinutes()
  var seconds=mydate.getSeconds()

  if (hours>24){
  hours=hours-24}

  if (hours==0){
  hours=0}

  if (hours<=9){
  hours="0"+hours}

  if (minutes<=9){
  minutes="0"+minutes}

  if (seconds<=9){
  seconds="0"+seconds}

  document.getElementById("thetime").innerHTML = "" + hours + ":" + minutes + ":" + seconds;
  setTimeout("time()", 1000);
}
</script>

<body onLoad="time();">





Det første script, fra 01.js filen - det andet virker ikke, med OnLoad.
Avatar billede roenving Novice
27. januar 2005 - 00:08 #5
Hvis scriptet med reply-tingen ligger inden body-elementet, vil intet andet javascript blive udført på siden, da body-elementet (og dets 'børn' ikke vil være til stede ved udførelsen !-)
Avatar billede dugi Nybegynder
27. januar 2005 - 00:09 #6
reply-tingen som ligger i 01.js ligger i <head> FØR <body>
Avatar billede roenving Novice
27. januar 2005 - 00:13 #7
-- og den kaldes først efter body-load ?-)
Avatar billede dugi Nybegynder
27. januar 2005 - 00:17 #8
det er bare funktion, så når du klikker "Besvar" på en kommentar langt nede i dokumentet, så laver den noget innerHTML og ædnre en value
Avatar billede olebole Juniormester
27. januar 2005 - 06:31 #9
<ole>

Enten:
  <body onLoad="time();denAndenFunktion();">

- eller:

// ... en hel masse script - her ...

window.onload = function() {
  time();
  denAndenFunktion();
}
</script>
</head>
<body>
<!-- ... og din body her - osv, osv -->

/mvh
</bole>
Avatar billede dugi Nybegynder
27. januar 2005 - 10:23 #10
olebole -> Den ene funktion skal ikke kaldes med onload og den som ikke blir kaldt med onload er den som virker.

sådan her ser min top ud:

html>

<head>
<meta name="Title" content="TranceStudio - Stedet for danske TranceHeads">
<meta name="Author" content="Morten Rugaard">
<meta name="Rating" content="General">
<meta name="Copyright" content="TranceStudio, Alle rettigheder forbeholdes">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Imagetoolbar" content="no">
<meta http-equiv="Imagetoolbar" content="false">
<title>TranceStudio - Stedet for danske TranceHeads</title>
<link rel="shortcut icon" href="favicon.ico">
<link href="styles/style.css" rel="stylesheet" type="text/css">

<script src="js/01.js"></script>
</head>

<script>
function time()
{
  var mydate=new Date();
  var hours=mydate.getHours()
  var minutes=mydate.getMinutes()
  var seconds=mydate.getSeconds()

  if (hours>24){
  hours=hours-24}

  if (hours==0){
  hours=0}

  if (hours<=9){
  hours="0"+hours}

  if (minutes<=9){
  minutes="0"+minutes}

  if (seconds<=9){
  seconds="0"+seconds}

  document.getElementById("thetime").innerHTML = "" + hours + ":" + minutes + ":" + seconds;
  setTimeout("time()", 1000);
}
</script>


<body onLoad="time();">
-------------------------------------

Det er kun den funktion i 01.js som virker, fordi den ik skal udføres OnLoad, men det andet "timescript" virker ikke - og det er direkte C/P fra et gammelt site hvor det virker UDEN problemer.

Fatter det virkelig ikke!
Avatar billede roenving Novice
27. januar 2005 - 11:48 #11
Så har du i 01.js en window.onload, som overskriver den onload, du har i body, derfor oles eksempel !-)
Avatar billede roenving Novice
27. januar 2005 - 11:50 #12
Får du forøvrigt fejl ved load ?-)

-- og skriv så dine javascript-tags helt ud, altså:

<script type="text/javascript" src="js/01.js"></script>

<script type="text/javascript">
Avatar billede dugi Nybegynder
27. januar 2005 - 12:13 #13
Har prøvet alt det i siger, intet virker.
Og nej har ingen window.onload i min 01.js :/

Undskyld jeg ikke helt forstår alle jeres udtryk, er ikke en haj til JS - er stadig på basis niveauet.
Avatar billede dugi Nybegynder
27. januar 2005 - 12:19 #14
roenving -> Nope ingen fejl ved onload :/
Avatar billede roenving Novice
27. januar 2005 - 12:58 #15
-- og når jeg paster det ind, virker det helt uden problemer ...

-- har du husket det element, som har id="thetime" ?-)
Avatar billede dugi Nybegynder
27. januar 2005 - 13:27 #16
indeed;

<td style="width: 690px; height: 31px"><span style="color: #6ED0F7">Idag:</span> <?php include("idag.php"); ?>&nbsp;&nbsp;<span style="color: #6ED0F7">Klokken:</span> <span id="thetime"></span></td>
Avatar billede roenving Novice
27. januar 2005 - 13:35 #17
Kan du ikke linke til det ?-)
Avatar billede dugi Nybegynder
27. januar 2005 - 14:00 #18
Tror jeg har fundet ud af det nu.
Har kigget lidt på det olebole sagde, og jeg brugte en "scrollingtext" script, som sådan en rulletekst.

I den var der en funktion der hed: window.onload=populate.
Hvis jeg fjerner rulleteksten, så virker uret.

Dvs. at det er den som "ødelægger" min body onload ik?
Så jeg skal bare lægge rulleteksten i en function for sig selv, eller kalde populate efter "time()" i body'en!?
Avatar billede roenving Novice
27. januar 2005 - 15:03 #19
Jeps, enten det (og udkommentér den (window.)onload !-)

-- eller som ole viser:

window.onload = function(){
  time();
  populate();
}

-- f.eks. ved at ændre

window.onload = populate;

-linjen til det ovenstående og så fjerne alt fra body-tagget !o]
Avatar billede dugi Nybegynder
27. januar 2005 - 17:09 #20
Tusind tak til jer begge.
Jeg syntes i begge fortjerner point i denne sag.

Smid et svar :)
Avatar billede olebole Juniormester
27. januar 2005 - 18:31 #21
Hvis mor siger til LillePeter:
  "Når du har spist, går du ud og vasker hænder"
- og far efterfølgende siger:
  "Når du har spist, går du ind og laver lektier"

- 'overskriver' far mors besked og LillePeter får (måske - hehe) lavet lektier, men garanteret ikke vasket hænder  ;o)

Hvis du skriver, hvad der skal ske på onload - og bagefter skriver, der skal ske noget andet, vil den første kommando blive overskrevet.

"LillePeter, når du har spist, skal du gå ud og vakse hænder og gå ind og lave lektier"
- lægger man begge 'kommandoer' ind i ét kald, kan man da have et naivt håb om, at begge dele bliver gjort  ;D
Avatar billede olebole Juniormester
27. januar 2005 - 18:32 #22
*griiiiiib*  :)
Avatar billede dugi Nybegynder
27. januar 2005 - 19:35 #23
Ja det forstår jeg godt, men det andet script som åbenbart var en konflikt, var et jeg havde fundet på nettet og bare smidt ind, har aldrig tænkt over der var en onload i det :o

Så det var først da jeg gloede det i gennem jeg så det :)
Men tak for hjælpen :)
Avatar billede olebole Juniormester
27. januar 2005 - 19:57 #24
Selvtak ... jeg kaster lige halvdelen til roenving. Han nåede aldrig at lægge et svar  ;o)
  http://www.eksperten.dk/spm/585386
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