Avatar billede proff Nybegynder
08. januar 2009 - 17:26 Der er 5 kommentarer og
1 løsning

Load javascript filer i top

Jeg benytter et simpelt "side" system, hvor jeg istedet for at include min top html kode, og bund html kode loader det igennem en meget simpel php class. Således behøves jeg ikke at skrive doctype, metakode, links til js filer osv. på hver underside.

Sådan skriver jeg på hver underside:

$side = new Side;
$side->setSideNavn("En default side titel hvis ønsket");
$side->top();
//mit indhold på undersiden her
$side->bund();


class Side {
 
    private $sidenavn;

    public function __construct($sidenavn = null)    {
        $this->setSideNavn($sidenavn);
    }

    public function setSideNavn($sidenavn) {
     
        if(strlen($sidenavn)>1) {
            $this->sidenavn = $sidenavn;
            return true;

        } else {

            $this->sidenavn = 'Motors Club';
            return true;
 
    }
    }

    public function getSideNavn() {
        return $this->sidenavn;
    } 

    public function top() {
    //print html starten på en underside, doctype, js indkludes mm.
    }
 
    public function bund() {
    //print alt bund html
    }
}


Mit problem er så at jeg godt kunne tænke mig at loade js filer ind i min $side->top(); funktion - eftersom jeg nu, loader samtlige JS filer i top funktionen selvom det ikke er alle der benyttes på alle undersider.

Kan man lave noget smart med $side->hentJs("/sti/fil.js"); for hver fil man ønsket hentet? Det skal jeg selvfølgelig gøre inden jeg printer top.

Hvordan gøres dette? På forhånd tak! :-)
Avatar billede jakobdo Ekspert
08. januar 2009 - 20:16 #1
Er det ikke og lave en:

private $js;

Og så netop noget i stil med:

$side = new Side;
$side->setSideNavn("En default side titel hvis ønsket");
$side->loadJS('/js/script.js'); //eller hvad navn du nu kan finde på.

Og i din funktion top() henter du så $js ud.
Du kan evt. lave $js til et array.
Og lade loadJS() smide hvert script i et array og løbe det igennem når du printer det ud.
Avatar billede proff Nybegynder
08. januar 2009 - 21:41 #2
Hej Jakobdo!

Det er præcist sådan noget jeg tænkte på, jeg prøvede igår at lave noget med array eftersom man jo nogle gange bruger flere Js filer, derved ville linjen $side->loadJS optræde flere gange.. men jeg buggede ved at skrive den korrekt ud af array og ind i top()

gider du evt. give et eksempel?
Avatar billede jakobdo Ekspert
08. januar 2009 - 22:00 #3
Hvis du i din klasse laver:

privat $js = array();

public function loadJS($script){
$this->js[] = $script;
}

public function top(){
//Din kode over script
$size = count($this->js);
for($i = 0; $i < $size; $i++){
$output .= '<script type="text/javascrit" src="'.$this->js[$i].'"></script>';
}
//Din kode under script
}
Avatar billede proff Nybegynder
08. januar 2009 - 23:19 #4
det var nøjagtigt hvad jeg ledte efter!! tusind tak.. smid et svar
Avatar billede jakobdo Ekspert
09. januar 2009 - 06:23 #5
SVAR!
Avatar billede jakobdo Ekspert
09. januar 2009 - 09:07 #6
Takker for point.
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