Avatar billede triggy Nybegynder
07. september 2006 - 11:48 Der er 12 kommentarer og
1 løsning

Hente HTML i JavaScript

Jeg har vølgende kodestykke, jeg godt kunne tænke mig at få lavet om, så jeg kan lægge "template" i en alm. html-fil.

var content = '<table width="300"  border="0" cellspacing="0" cellpadding="0">';
content+= '<tr>';
content+= '<td class="tableframe" width="300">';
content+= '<table width="100%"  border="0" cellspacing="0" cellpadding="0">';
content+= '<tr>';
content+= '<td class="tablehead">Opret ordre:</td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td class="tablecontent">&nbsp;</td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td align="center" class="tablecontent">Indtast Kundenr eller søgetekst</td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td align="center" class="tablecontent"><form name="neworderform1" onSubmit="return false;"><input name="searchstring" type="text" onKeyup="newordercmd();"></td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td class="tablecontent">&nbsp;</td>';
content+= '</tr>';
content+= '</table>';
content+= '</td>';
content+= '</tr>';
content+= '</table>';


det resultat jeg gerne vil frem til, er hvor alt ovenstående html er gemt i en alm. html fil, og bliver hentet ind som et template.

noget i stil med

content = readfile('content.html');

ved godt ovenstående ikke virker :o)
Avatar billede thesurfer Nybegynder
07. september 2006 - 12:57 #1
JavaScript kan ikke læse filer.

Med mindre at man benytter AJAX løsning (JavaScript + XML requests)..
Avatar billede thesurfer Nybegynder
07. september 2006 - 12:58 #2
Du kan dog bruge en ekstern .js fil, som udskriver noget kode..

Jeg laver lige et eksempel..
Avatar billede thesurfer Nybegynder
07. september 2006 - 13:02 #3
Smid din content kode (som det står her) i en fil kaldet "temp_01.js", og placer filen i samme mappe som HTML filen:

// ---
var content = '<table width="300"  border="0" cellspacing="0" cellpadding="0">';
content+= '<tr>';
content+= '<td class="tableframe" width="300">';
content+= '<table width="100%"  border="0" cellspacing="0" cellpadding="0">';
content+= '<tr>';
content+= '<td class="tablehead">Opret ordre:</td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td class="tablecontent">&nbsp;</td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td align="center" class="tablecontent">Indtast Kundenr eller søgetekst</td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td align="center" class="tablecontent"><form name="neworderform1" onSubmit="return false;"><input name="searchstring" type="text" onKeyup="newordercmd();"></td>';
content+= '</tr>';
content+= '<tr>';
content+= '<td class="tablecontent">&nbsp;</td>';
content+= '</tr>';
content+= '</table>';
content+= '</td>';
content+= '</tr>';
content+= '</table>';
// ---

Og din HTML fil:

<!-- html filens indhold: start -->
<script type="text/JavaScript" language="JavaScript" src="temp_01.js"></script>

Indholdet er: <script type="text/JavaScript" language="JavaScript">document.write(content)</script><br>
Slut.

<!-- html filens indhold: slut -->


Læg mærke til, at der ikke er <script..> og </script> i .js-filen..
Avatar billede thesurfer Nybegynder
07. september 2006 - 13:03 #4
Jeg har kaldt filen "temp_01.js", så du kan have flere template filer..

F.eks. temp_01.js, temp_02.js, temp_03.js, osv...
Avatar billede thesurfer Nybegynder
07. september 2006 - 13:04 #5
Svar.
Avatar billede triggy Nybegynder
07. september 2006 - 14:20 #6
tjae... det løser godtnok ikke mit problem.
Ideen er, at man skal kunne ændre designet i en alm. html-editor.
Din løsning splitter jo bare koden op i to filer.

Jeg bruger i denne opgave allerede en AJAX løsning, til at sende og modtage data fra databasen.
Kan man ved hjælp af AJAX læse andet end alm. XML filer ?
Avatar billede thesurfer Nybegynder
08. september 2006 - 10:01 #7
Jeg ser lige om jeg kan nå at kigge på det, senere i dag eller i aften..
Avatar billede triggy Nybegynder
08. september 2006 - 10:07 #8
har også siddet og kigget lidt på muligheden for at gemme html-koden i en enkelt node i xml, men det bøvler lidt med tags'ne
men det kunne være en mulighed, så kan je bare generere xml-filen i asp, men det optimale ville naturligvis være, at den læser filen direkte
Avatar billede thesurfer Nybegynder
08. september 2006 - 20:21 #9
Hmmm.. Jeg kan ikke helt se pointen i at lave det i HTML, når du har ASP tilrådighed..

Du kunne evt lave en fake-js fil ved brug af ASP..

Eksempel:
<script type="text/JavaScript" language="JavaScript" src="lav_fil.asp?temp=01"></script>

lav_fil.asp kunne se sådan ud:

<%
temp = request.querystring("temp")

select case temp
case "01"
%>
din html kode her, der tilhører template_01
<%
case "02"
%>
din html kode her, der tilhører template nummer "02"
<%
case else
%>
Hvad skal der ske, hvis man ikke angiver "01" eller "02"? Det putter du her..
Det kunne f.eks. være en standard menu eller lignede
<%
end select
%>


Koden er ikke testet (skrevet direkte ind på eksperten.dk), men jeg håber at du kan se hvor jeg vil hen med det..


Hvis du nu alligevel har ASP tilrådighed, kan du lige så godt bruge det, for at gøre dit arbejde lettere..

Det kan godt være, at man kan gøre ligende i JavaScript..
Avatar billede thesurfer Nybegynder
11. september 2006 - 00:06 #10
Måske kan du bruge denne løsning: http://www.w3schools.com/xml/tryit.asp?filename=try_xmlhttprequest_js

Erstat "note.xml" i linien: onload="loadXMLDoc('note.xml')" med din egen sti+fil.
Avatar billede thesurfer Nybegynder
11. september 2006 - 00:08 #11
I Opera kan man kun bruge det på samme server, som selve scriptet ligger på..
Ellers får man denne fejl:

JavaScript - STI + FILNAVN
Event thread: load
Error:
name: Error
message: Security violation
Avatar billede triggy Nybegynder
12. september 2006 - 11:56 #12
Har fundet en anden løsning, da det er et krav, at det skal være alm. html.

Bruger ASP til at hente html-filen indi en variabel, og overfører den variabel til javascript variabel, så loader den alle templates fra starten, hvilket betyder hurtigere afvikling af det resterende, da den ikke skal hente templates'ne hver gang der åbnes en ny side.
Avatar billede triggy Nybegynder
12. september 2006 - 11:57 #13
da dit svar gav mig inspirationen til det, får du points. tak for hjælpen
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