Avatar billede tvegaard Nybegynder
19. april 2001 - 10:41 Der er 15 kommentarer og
2 løsninger

Mulighed for at fjerne html-kode med Javascript??

Jeg har lavet et lille script der tester en værdi i en XML-fil og hvis værdien er 1 skal et stykke html-kode være en kommentar.

Ideen er at man ved at ændre værdier i XML-filen får forskellige dele af web-siden at se. En vigtig ting: Dette skal IKKE køre på en webserver men skal virke fra brugerens harddisk.

Koden er som følger:

<script language=\"JavaScript\">
x = \"<span datasrc=#xmldso datafld=værdi></span>\"
if (x=\"1\")
{
document.write(\"<!--\")
}
</script>
Her kommer en masse HTML....

<script language=\"JavaScript\">
x = \"<span datasrc=#xmldso datafld=værdi></span>\"
if (x=\"1\")
{
document.write(\"-->\")
}
</script>

Med denne kode får man en fejl når man loader siden i browseren: \"A runtime error has occurred - do you wish to debug? Error: Syntax error\"

Håber at nogen kan hjælpe mig
Avatar billede hoejrup Nybegynder
19. april 2001 - 10:56 #1
Har du prøvet med x == 1

/per
Avatar billede tvegaard Nybegynder
19. april 2001 - 10:58 #2
Ja - det har jeg prøvet.

Det virker hvis jeg skriver f.eks. document.write(\"Hallo\") istedet.... så det må være et eller andet med syntaksen i forhold til HTML koden???
Avatar billede jakoba Nybegynder
19. april 2001 - 10:59 #3
Min normale måde at løse det problem er at lægge de \'betingede\' dele af siden ind i document.write kald og så kun skrive dem hvis de skal være der.

eg:

if ( user_name_found_in_cookie ) {
  document.write ( \"<p>Hallo igen \" +userNavn
                + \"<p>Rart at se dig igen.\" );
} else {
  document.write ( \"<p>Velkommen til min super side om brune æg. \"
                + \"<p>Indtast venligst dit navn her: \"
                + \"<form><input type=\'text\' name=\'xx\' value=\'\'></form>\" );
};

det har ikke givet de store problemer endnu.

mvh JakobA
Avatar billede tvegaard Nybegynder
19. april 2001 - 11:04 #4
Hej Jakob - Tak for svaret men det er desværre ikke så hensigtsmæssigt.

Min HTML-side består af en masse \"moduler\" (10-15) og hver modul er ca 50 linier så hvis jeg skal skrive 10 moduler af 50 linier hver ind i scriptet så bliver det meget langt...
Avatar billede jakoba Nybegynder
19. april 2001 - 11:17 #5
Ja så er \"<!--\" og \"-->\" nok noget af det bedste.

men pas gevaldigt på for der er en del faldgruber:

IE vil fx nogen gang \"indsætte\" en \"-->\" for enden af et script.

Både <!-- og --> bør stå alene på sin egen linie. eg: document.write(\"\\n<!--\\n\"); og document.write(\"\\n-->\\n\")

Når du har skrevet et \"<!--\" er det så ikke lidt ulogisk at bruge html-tags og script bagefter for at skrive et \"-->\"?

mvh JakobA
Avatar billede tvegaard Nybegynder
19. april 2001 - 11:27 #6
Jeg har lige prøvet at bruge (\"\\n<!--\\n\")
Det virker stadig ikke - ØV!!!

Jeg forstår ikke helt dit spørgsmål?? Jeg er nødt til at afslutte kommentaren.

F.eks. (modul 1 skal vises - modul 2 skal ikke ses):

javascript...indsætter <!--
HTML-modul 1
javascript...indsætter -->
HTML-modul 2

Håber at det forklarer problemet bedre.
Avatar billede tvegaard Nybegynder
19. april 2001 - 11:28 #7
Kvajede mig lige...

Til eksemplet oven over:
Modul 1 skal ikke vises - modul 2 skal

Avatar billede jakoba Nybegynder
19. april 2001 - 11:45 #8
men hvordan skal brovseren vide at

javascript...indsætter -->

ikke er en del af HTML-modul 1?

<sript ...> er også en html-kommando.

mvh JakobA
Avatar billede tvegaard Nybegynder
19. april 2001 - 12:00 #9
Det virker som om at browseren eksekverer de scripts der er i html-filen før den viser den.
Jeg får den tidligere nævnte fejl når jeg loader min html-side men det virker faktisk. Siden viser ikke modul 1 men viser modul 2 3 ... så jeg skal bare have fjernet fejlen.
Avatar billede erikjacobsen Ekspert
19. april 2001 - 12:05 #10
Må jeg anbefale at lave det i rammer. I en usynlig eller synlig ramme laver
du document.write i den synlige ramme. Ellers opnår du netop det problem,
som du beskriver - man kan stort set ikke løse det ordentligt.
Avatar billede tvegaard Nybegynder
19. april 2001 - 12:08 #11
Hej Erik

Kan du ikke uddybe lidt??

Er dit forslag at jeg skal lave en frame for hvert modul jeg har eller??
Avatar billede erikjacobsen Ekspert
19. april 2001 - 12:09 #12
Ok - 2 secs. Så får du et (minimalt) eksempel.
Avatar billede hoejrup Nybegynder
19. april 2001 - 12:10 #13
tvegaard>

<script language=\"JavaScript\">
<!--

-->
<script>

Det eneste de to <!--  --> fortæller browseren er, at hvis browseren ikke understøtter javascript. Så skal javascript koden ikke afvikles på browseren. Så du behøver ikke lave det så omstændigt.


<script language=\"JavaScript\">
<!--
if (x != 1) {
  x = \"<span datasrc=#xmldso datafld=værdi></span>\"
}
-->
</script>
Her kommer en masse HTML....

<script language=\"JavaScript\">
<!--
if (x != 1) {
  x = \"<span datasrc=#xmldso datafld=værdi></span>\"
}
-->
</script>

/per
Avatar billede erikjacobsen Ekspert
19. april 2001 - 12:22 #14
Avatar billede erikjacobsen Ekspert
19. april 2001 - 12:32 #15
Åh ja, der er et potentielt synkroniseringsproblem. Hvis siden er
blank, så reload lige den synlige frame.
Avatar billede erikjacobsen Ekspert
19. april 2001 - 12:44 #16
Nå, ok, den virkede så ikke i IE4 - mage til bøvl man skal have for
den dumme browser. Første forsøg virkede naturligvis i verdens
bedste browser: NS4.5 :)

Prøv bare igen...
Avatar billede tvegaard Nybegynder
19. april 2001 - 15:34 #17
Tak til alle der har hjulpet!!!!
Jeg har fordelt pointene imellem jer - desværre kunne jeg ikke give JakobA nogen men mange tak for hjælpen!!

Det endte med at jeg løste opgaven vha. et lille vb-program man skal køre først.
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