Hejsa.. Søger et javascript alternativ til PHP include.. - ønsker at inkludere .txt filer indeholdende HTML, client side... !?
Har prøvet følgende:
document.write('<?php include("html.txt");?>');
- Dette virker dog ikke da jeg i min "html.txt" fil har linjeskift for at bevare overskueligheden i min kode, og dette ønsker jeg ikke at ændrer hvis jeg kan undgå det.. findes der en alternativ måde!? (Hvad der skal skrives ind afgøres server side via PHP, men skal først skrives ind i dokumentet client side!)
Kan i øvrigt godt være at det ser lidt mærkeligt ud det jeg her vil, men der ER en mening med galskaben :-D (Ønsker kun at inkludere det pågældende HTML, hvis man har javascript slået til i sin browsere - og hvad der skal inkluderes kommer an på hvilken browser man bruger :) )
Den side havde jeg faktisk selv fundet tidligere i går, men synes ikke lige der er en løsning der jeg kan bruge... Vil ikke bruge iframes, og synes det er lidt grimt at bruge AJAX da det resulterer i en ekstra, og dybest set overflødig, HTTP request... - Men kan være at jeg bliver nød til at gøre sådan :-)
Alternativt kunne jeg godt bruge en metode til at sikre mig at en bruger har slået javascript til i sin browser... Men efter hvad jeg kan finde på google er dette ikke rigtig muligt at finde ud af!?
Du kan jo sagtens have et JS-object med data liggende i en JS-fil. I samme fil kan du have noget DOM-kode til oprettelse af HTML-elementer og indsættelse af data.
document.write og brug af innerHTML er på vej ud af webkode - og har faktisk været det i mange år. Således har innerHTML f.eks. aldrig været valid efter nogen somhelst standard og bliver det heller aldrig. Desuden er både document.write og innerHTML komplet ubrugelige under XHTML.
Hvad angår AJAX, så bruger man _aldrig_ innerHTML, men DOM til at indsætte data i dokumentet. Det får du bare ikke indtryk af, når du læser på WWW, da højest 10% af alle tutorial-forfattere i kategorien ved, hvad AJAX er - og kan bruge det (én af de mest brugte 'w3schools.com' er således komplet ubrugelig!) ;o)
Du bør bruge DOM -> "Document Object Model". Du opretter elementer med f.eks: var oElm = document.createElement("div");
- og indsætter en tekst som en tekst-node: var oTxt = document.createTextNode("En tekst"); oElm.appendChild(oTxt);
Til sidst kan du indsætte div'et i et andet: document.getElementById("moderDiv").appendChild(oElm);
Alt afhængigt af, hvad det er, du skal lave, kan du også klone hele HTML-strukturer med: var oNewTR = document.getElementById("aTableRow").cloneNode(true);
Dermed kan du klone et element med alle dets child-elementer og bruge dette som template for en masse andre elementer, der skal sættes ind - f.eks. tabelrækker.
Husk, at alt er noder - også tekst. Derfor sætter du teksten i et element på denne måde: var oElm = document.getElementById("mitDiv"); oElm.firstChild.nodeValue = "noget nyt ..."; // Sæt nodeValue på tekst-noden
<div id="mitDiv">noget</div>
Hvis ikke du har rodet med DOM før, er det på høje tid. DOM Level 1 blev gældende standard i 1999, så der er ingen undskyldning for kun at kende document.getElementById =)
Ok.. Var bange for at du ville have mig til at oprette hver enkelt element i mit HTML dokument med createElement :-D Kan indholdet (teksten) i en createTextNode godt være HMTL?
Som jeg gør nu skriver jeg alt min HTML på almindeligvis i en .txt fil - Kører det så igennem lidt PHP der fjerner linjesift for til sidst at sætte det ind med innerHTML. - Har jeg forstået det rigtigt hvis jeg kan fortsætte denne praksis og så bare sætte min html ind med createTextNode + resten hvad du skriver, eller er det helt misforstået?
under alle omstændigheder kan jeg forstå at jeg skal ahve læst op på noget DOM i hvert fald - spænende :-)
Nej, en textNode kan kun indeholde tekst, så det har du ikke forstået rigtigt :)
I det hele taget vil jeg ikke anbefale JavaScript til at inkludere med. Det bør du bruge f.eks. PHP til. Husk på, at søgemaskiner ikke kan bruge JavaScript og således slet ikke finder indhold, indskrevet med JS. JavaScript bør du ikke bruge til egentligt indhold.
Til gengæld er JavaScript ganske effektivt sammen med XMLHttpRequests og DOM - den teknik, der går under betegnelsen AJAX. Men stadig ikke til egentligt indhold. Her kalder man serveren med et XMLHttpRequest-objekt. Serveren formaterer så data i XML eller JSON (JavaScript Object Notation) og sender dem retur til klienten.
I browseren oprettes så hvert HTML-element med DOM og de fyldes med de tilsvarende data og indsættes i dokumentet. Dog kan du som sagt klone større HTML-strukture og bruge dem som skabeloner. Det eneste problem er, at det er virkelig svært at finde gode AJAX-tutorials på WWW.
Ok.. Har fået læst lige op det siden jeg skrev i går aftes, og det er nu gået op for mig at du rent faktisk vil have mig til at oprette hver enkelt HTML-element med DOM... Puhh... Kunne godt gå hen og blive en besværlig, langsommelig og totalt uoverskuelig måde at skrive hjemmesider på.. :-D
Jeg har forståelse for at du ikke vil råde mig til at indskrive alt min HTML med Javascript - det ville jeg normalt heller ikke råde folk til, men lige i dette sammenhæng er det det jeg har brug for, og det der giver best mening... (Og ja, jeg er klar over at Google ikke kan indeksere det jeg indsætter med Javascript, men lige i dette tilfælde er det heller ikke nødvendigt - ellers ville jeg ikke gøre det)
Jeg kunne også vende mit spørgsmål om og så spørge. Hvis jeg nu VIL indsætte alt min HTML, med Javascript, og hvis jeg nu er FULDSTÆNDIG ligeglad med om Google kan indeksere det (Og nej, jeg bruger ikke XHTML) - Hvordan er det så smartest at gøre !?
- Til det spørgsmål tyder alt hvad jeg har læst på at innerHTML, ikke bare er en lettere metode at bruge, men faktisk også bedre på næsten alle fronter... Det er betragtelig hurtigere for browseren at sætte ind, det er betragtelig hurtigere for mig at skrive, samt lettere at overskue - og det efterlader min HTML i en overskuelig tilstand der gør vedligeholdelse uendeligt meget lettere... - Ja, det er så vidt jeg kan se faktisk anbefalelsesværdigt på ALLE områder! (Med den ene akademiske undtagelse at det ikke er en del af nogle standarter, hvilket XMLHttpRequest i øvrigt heller ikke er! - Men det skal man måske heller ikke benytte hvis man laver "rigtig" AJAX!?? ;-):-p )
Jeg kan godt følge din argumentation, og du lader til at have nogle gode pointer, men synes også omvendt at du sætter det hele lidt for meget på spidsen - og når vi kommer til innerHTML lader din argumentation til at være mere følelsesladdet en rationelt funderet. - Alt i alt er jeg dog igen blevet meget klogere - takker! :-) (Ikke mindst klogere på hvornår jeg i hvert fald IKKE skal bruge innerHTML )
Synes godt om
Ny brugerNybegynder
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.