Oprettet tor. d. 17. december 2009 kl. 12:23:06

dotcom1
dotcom1 (18.839 point. Point ude: 0)

To gange (window, 'load', myFunction) - den anden overskriver den første

Hej.

Jeg har brug for at kunne køre to forskellige scripts når en side loades. Jeg kan imidlertid se, at den anden funktion overskriver den første. De to script ser således ud:

<script type="text/JavaScript">
  addEvent(window, 'load', initCorners);

  function initCorners() {
    var settings = {
      tl: { radius: 10 },
      tr: { radius: 10 },
      bl: { radius: 10 },
      br: { radius: 10 },
      antiAlias: true
    }
 
    curvyCorners(settings, "#content");
    curvyCorners(settings, "#right");
    curvyCorners(settings, "#bottom");
  }
</script>

og

<script type="text/JavaScript">
    Event.observe( window, 'load', function() {
    var e = new Equalizer( 'content', 'right');
    },
    true );
</script>

Hvordan gør man så begge scripts køres uden problemer?

På forhånd mange tak.

Skrevet tor. d. 17. december 2009 kl. 12:48:22| #1

intenz
intenz (43.860 point)
underenplov.dk
Der er forskellige muligheder for hvordan du kan gøre det. Du kan se dem her:
http://www.webreference.com/ (...)

Skrevet tor. d. 17. december 2009 kl. 13:27:38| #2

dotcom1
dotcom1 (18.839 point)
Ja, jeg har selv fundet samme script her: http://simonwillison.net/ (...) - men jeg har ingen anelse om hvordan jeg putter mine to scripts ind i det. Kan du hjælpe med det?

Skrevet tor. d. 17. december 2009 kl. 13:32:06| #3

intenz
intenz (43.860 point)
underenplov.dk
Mit umiddelbare bud er:

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(initCorners);
addLoadEvent(function() {
  var e = new Equalizer( 'content', 'right');
});

Skrevet tor. d. 17. december 2009 kl. 13:51:23| #4

dotcom1
dotcom1 (18.839 point)
Hmm, det må vel så blive noget i den stil:

<script type="text/JavaScript">
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(initCorners) {
    var settings = {
      tl: { radius: 10 },
      tr: { radius: 10 },
      bl: { radius: 10 },
      br: { radius: 10 },
      antiAlias: true
    }
 
    curvyCorners(settings, "#content");
    curvyCorners(settings, "#right");
    curvyCorners(settings, "#bottom");
  };
addLoadEvent(function() {
    var e = new Equalizer( 'content', 'right');
});
</script>

- Men det giver fejl i linien
addLoadEvent(initCorners) {

"missing ; before statement"

Nogen idéer?

Skrevet tor. d. 17. december 2009 kl. 14:02:53| #5

intenz
intenz (43.860 point)
underenplov.dk
initCorners er allerede en funktion og skal derfor ikke sættes som funktion i onload metoden.

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(initCorners); // initCorners funktionen bliver tilføjet til onload her.

addLoadEvent(function() {
  var e = new Equalizer( 'content', 'right');
});

function initCorners() {
    var settings = {
      tl: { radius: 10 },
      tr: { radius: 10 },
      bl: { radius: 10 },
      br: { radius: 10 },
      antiAlias: true
    }
 
    curvyCorners(settings, "#content");
    curvyCorners(settings, "#right");
    curvyCorners(settings, "#bottom");
  }

Skrevet tor. d. 17. december 2009 kl. 14:35:25| #6

dotcom1
dotcom1 (18.839 point)
Hej igen og tak for din hjælp.

Funktionen initCorners bliver kørt fint. Derimod ser det ikke ud til at

Event.observe( window, 'load', function() {
    var e = new Equalizer( 'content', 'right');
    },
    true );

- bliver kørt.

Se min testside her: http://komfrisk.dk/ (...)

initCorners laver runde hjørner mens den der Equalizer gør, at begge divs bliver lige høje uanset hvor meget indhold, der er i dem.

Begge scripts virker fint hver for sig, så der er en eller anden konflikt et sted.

Skrevet tor. d. 17. december 2009 kl. 14:49:44| #7

intenz
intenz (43.860 point)
underenplov.dk
Prøv at se om funktionen bliver kørt, ved at ændre det til:
addLoadEvent(function() {
  alert('virker');
  var e = new Equalizer( 'content', 'right');
});

Ellers kan du lave den nemme løsning, ved at lave en enkelte funktion der køres ved onload, som så indeholder alt det der skal køres:

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(onload_func); // funktion der indeholder alt der skal køres

function onload_func() {
  initCorners();
  var e = new Equalizer( 'content', 'right');
}

function initCorners() {
    var settings = {
      tl: { radius: 10 },
      tr: { radius: 10 },
      bl: { radius: 10 },
      br: { radius: 10 },
      antiAlias: true
    }
 
    curvyCorners(settings, "#content");
    curvyCorners(settings, "#right");
    curvyCorners(settings, "#bottom");
  }

Skrevet tor. d. 17. december 2009 kl. 14:51:58| #8

dotcom1
dotcom1 (18.839 point)
Ah, fandt løsningen.

Jeg fjernede addEvent(window, 'load', initCorners);

og tilføjede i stedet:

<script type="text/JavaScript">
    Event.observe( window, 'load', function() {
    var e = new Equalizer( 'content', 'right');
    initCorners();
    },
    true );
</script>

Det virker!

Du skal alligevel have tak for din hjælp.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Skub indhold ned

Oprettet den 3. februar 2012 kl. 22.26
i-love-pc giver 80 point for svar | Giv et svar »

Hjælp til at lave formular kategorier

Oprettet den 3. februar 2012 kl. 21.09
idipot giver 200 point for svar | Giv et svar »

on mouse down repeat

Oprettet den 3. februar 2012 kl. 12.29
klovnefisken giver 30 point for svar | Giv et svar »

Seneste guides

Den gode bruger
Adgang til NAS-server via WAN
Kollektion af Batch tutorials (FJERNET)
Tilpas din YouTube afspiller


   




Tips & Tricks fra PC World

Teaser billede

Sådan fjerner du pladskrævende metadata fra dine fotos

Det er langt fra altid, at dine billeders metadata såsom kameramodel og geografisk placering er vigtige at bevare. JPG & PNG Stripper kan luge ud i billedfilerne, så de fylder meget mindre....


Anmeldelser fra PC World

Teaser billede

Test: Superlet bærbar med mange muligheder

Toshiba har med Satellite Z830 skabt en af verdens letteste ultrabooks. Den vejer 1,1 kilo, og computeren på 13 tommer ser på papiret ud til at være en oplagt rejsekammerat. Men den lave vægt har...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Samsung Galaxy S III på vej

Samsungs bedst sælgende smartphone nogensinde får en efterfølger om kort tid.


Nyheder fra Computerworld

Teaser billede

Apple retter hele 51 sikkerhedshuller i Mac OS X

Apple lukker hele 51 sårbarheder i Mac OS X, hvoraf de fleste er kritiske. Se her, hvor hullerne er.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger