Toon posts:

Javascript maakt de hele pagina leeg.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Om de een of andere duistere reden, krijg ik een lege pagina wanneer ik inline javascript probeer te gebruiken in een xhtml strict pagina.

Dit is de pagina in kwestie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      <title>Whatever</title>
      <link rel="stylesheet" type="text/css" href="style/main.css" />
      <script type="text/javascript" src="javascript/main.js" />
   </head>
   <body>
      <div id="controls">
         [img]"style/arrowright.jpg"[/img]
      </div>
      <div id="nocontrols">
         [img]"style/arrowleft.jpg"[/img]
      </div>
      <div id="middlepage">
         Your browser does not support javascript, or it may be disabled.<br />
         Please enable javascript, or download another browser.
      </div>
      <script type="text/javascript">
         <!--
            <![CDATA[
               ConfirmJavascript();
            ]]>
         //-->
      </script>
   </body>
</html>



Het probleem zit hem in het onderste javascript gedeelte. Het maakt niet uit wat ik in de tag zet, al laat ik de tag leeg, de pagina blijft leeg. Alleen als ik de javascript tag helemaal weghaal, krijg ik weer wat op de pagina te zien. Het ligt ook niet aan de ConfirmJavascript functie, want die heb ik inmiddels herschreven naar alleen een alert("Yoohoo"); tag.

De w3c validator vindt de pagina prima, daar ligt het ook niet aan.

Iemand enig idee?

[edit]Goed, en waarom ik de titel nou weer in het engels heb gezet? Geen flauw idee. Kan een blauwe boon dat misschien even aanpassen?

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 21-12-2025
code:
1
<script type="text/javascript" src="javascript/main.js" />

Wat doet deze regel in de header??? , je sluit hem nergens af... , als die regel onbreekt of </script> er achter staat geeft frontpage aan dat de code oke is ;)

[ Voor 53% gewijzigd door djexplo op 25-02-2005 16:25 ]

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Verwijderd

in welke browsers werkt het niet? in principe zou je js helemaal niet moeten werken, omdat het tussen comment delimiters staat (en het xhtml is), maar ik gok dat IE daar wel anders mee om zal gaan

@ hierboven, volgens mij is dat gewoon een straightforward manier om een jsje te linken? ik zie niet wat daar mis mee is

[ Voor 25% gewijzigd door Verwijderd op 25-02-2005 16:23 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

code:
1
<script type="text/javascript" src="javascript/main.js" />

Mag script zo wel worden afgesloten :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

wel in xhtml

maar ik gok dat we geen xhtml gebruiken ;)

Verwijderd

Topicstarter
Het is een "self-closing tag" en dat is inderdaad niet de tag die problemen geeft. Die werkt namelijk prima, en wordt bovendien geaccepteerd door de w3c validator. Dus...

Het probleem zit in de onderste script-tag.
En het statement dat het niet zou moeten werken omdat het tussen Comment-Delimiters staat is niet waar. In javascript is <!-- namelijk een single-line comment, in tegenstelling tot html, dit is dus precies waarom het handig is.

Het probleem is dat de hele pagina niet werkt met de onderste script tag. Wat ik er ook in stop.

@mophor, wat bedoel je met: ik gok dat we geen xhtml gebruiken?

[ Voor 8% gewijzigd door Verwijderd op 25-02-2005 16:31 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Apart want met </script> valideert die validator ook ;)



Verwijderd schreef op vrijdag 25 februari 2005 @ 16:30:
Het is een "self-closing tag" en dat is inderdaad niet de tag die problemen geeft. Die werkt namelijk prima, en wordt bovendien geaccepteerd door de w3c validator. Dus...

Het probleem zit in de onderste script-tag.
Grappig, als ik een </script>-tag toevoeg, krijg ik meteen content te zien :)

[ Voor 3% gewijzigd door BtM909 op 25-02-2005 16:32 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

ik ben bang dat jij xhtml nog niet helemaal snapt

- waarschijnlijk verstuur je de bende als text/html, waardoor het dus als html gelzen wordt en de parser struikeld omdat script niet wordt afgesloten
- stuur je het wel als xhtml, dan is er ook helemaal niks aan de hand, behalve dan dat <!-- .. --> binnen een javascript element nu wél als comment wordt gezien en de hele bende dus niet wordt uitgevoerd, wil je dit wel doen, dan moet het als volgt:

code:
1
2
3
4
<script type="text/javascript">
<!--//--><![CDATA[//><!--
// je js code
 //--><!]]>


@ btm:909: in xhtml is <script></script> net zo toegestaan als <script />. In SGML is dat laatste echter gelijk aan <script>>, maar de meeste html ua's maken daar <script> van en is de boel dus niet afgesloten (want de endtag is mandatory)

ergo: de validator denkt dat het xhtml is (vanwege het doctype), maar meneer serveert als html, dus is het eigenlijk html

serveer de boel maar eens als xhtml: http://www.rikkertkoppes.com/thoughts/test-suite
dan zal je zien dat het wel werkt

[ Voor 42% gewijzigd door Verwijderd op 25-02-2005 16:44 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op vrijdag 25 februari 2005 @ 16:34:
code:
1
2
3
4
<script type="text/javascript">
<!--//--><![CDATA[//><!--
// je js code
 //--><!]]>
Ach so... Nu snap ik waar jij op doelde ;)

offtopic:
Ben niet helemaal wakker, dus zit niet op te letten :z

[ Voor 32% gewijzigd door BtM909 op 25-02-2005 16:37 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Verdorie. Het komt natuurlijk weer eens door die baggerige Windhoos.
'k Zit nu op m'n werk, en daar hebben ze nog niet door dat linux veel beter is.

Ik test de pagina's gewoon locaal, en windows serveert het als gewone html, omdat er wordt gekeken naar bestandsextensie i.p.v. te kijken naar het bestand.

Nou ja, het het maar hernoemd met een xhtml extensie, en nou doet ie het!

Verwijderd

gefeliciteerd, maar weet wel dat IE geen xhtml ondersteunt, dus dat het daar dus evengoed niet in gaat werken.

doe maar gewoon html 4.01 ;)

en je in-document javascript staat dus nog steeds in commentaar, dus dat werkt ook niet

[ Voor 25% gewijzigd door Verwijderd op 25-02-2005 16:48 ]


Verwijderd

Topicstarter
Boeie als het in IE niet werkt. Ik schrijf gewoon geldige pagina's, en als IE niet werkt, dan downloaden ze maar een betere browser.

Anders blijven mensen maar IE gebruiken.

Verwijderd

Topicstarter
Verdorie. Nou heb ik toch nog een probleem. :(

In de functie ConfirmJavascript wil ik de text aanpassen in van de middlepage div, maar hij maakt 'm alleen maar leeg, en de javascript console geeft me deze fout:

Fout: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLElement.innerHTML]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///blablabla/javascript/main.js :: ConfirmJavascript :: line 27" data: no]

Dit is m'n functie:

code:
1
2
3
4
5
function ConfirmJavascript()
{
    alert(document.getElementById("middlepage").innerHTML);
    document.getElementById("middlepage").innerHTML="The first image is being downloaded<br />Please stand by...";
}


Zoals je ziet, heb ik ook even een alertje toegevoegd, om de oorspronkelijke waarde te laten zien. Dit werkt prima. Alleen ik kan de waarde niet instellen, want dan krijg ik die, overigens ontzettend duidelijke, foutmelding.

Verwijderd

innerHTML werkt niet in xhtml

doe maar html 4.01 ;) :P

Verwijderd

Topicstarter
Grrr.

Jij geeft ook niet op he met je html...
Ik zou het liever op een andere manier oplossen. Misschien met createElement() en node.appendChild() of zo? Daar weet ik eigenlijk te weinig van af.

Iemand een ander idee?

Verwijderd

je mag best met xhtml werken hoor, maar er zijn gewoon een berg beperkingen dan en voordelen zijn er nauwelijks.

Als je in xhtml aan de code dingen wil gaan veranderen moet je idd met DOM methoden werken

(innerHTML en document.write werken niet omdat je hiermee malformed xml zou kunnen maken, en dat mag niet in een xml document)

hier heb je een goede reference voor XMLDOM: http://www.devguru.com/Te...uickref/xmldom_intro.html

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
Ik denk dat je firstChild.nodeValue nodig hebt.

En over je opmerking over IE. Ik denk dat die mensen gewoon je pagina wegklikken ipv een nieuwe browser downloaden. Net zoals ik pagina's wegklik die alleen in IE werken. Opera (iig tot versie 7.6) gaat trouwens ook stijgeren op DOM functies wanner je XHTML als XML verstuurt. Ik vrees dat je site dus nogal FF-only gaat worden.

Regeren is vooruitschuiven


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Zolang je XHTML nog als text/html serveert kan je prima wegkomen met innerHTML en document.write(), maar dan kan je zoals mophor terecht aangeeft net zo goed HTML 4 (strict) gebruiken aangezien dat functioneel precies hetzelfde is ;)

Intentionally left blank


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op vrijdag 25 februari 2005 @ 16:34:
@ btm:909: in xhtml is <script></script> net zo toegestaan als <script />. In SGML is dat laatste echter gelijk aan <script>>, maar de meeste html ua's maken daar <script> van en is de boel dus niet afgesloten (want de endtag is mandatory)

ergo: de validator denkt dat het xhtml is (vanwege het doctype), maar meneer serveert als html, dus is het eigenlijk html

serveer de boel maar eens als xhtml: http://www.rikkertkoppes.com/thoughts/test-suite
dan zal je zien dat het wel werkt
Wil hier toch nog even op reageren (ook voor TS):

\o/ Tadaa bugje: http://piecesofrakesh.blo...in-internet-explorer.html

[ Voor 5% gewijzigd door BtM909 op 10-03-2005 12:07 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Klopt; HTML kent geen shorthand voor het afsluiten van tags. In fact, de /> is niet eens valid SGML; dankzij de NET SHORT feature is het echter toegestaan in HTML, maar de parser doet er geen donder mee. In fact is het zelfs bad practice om het te gebruiken in HTML.

Bottomline: als je niet weet wat XHTML precies inhoud hou het dan gewoon bij HTML (en als je wel weet wat het inhoud dan hou je het alsnog bij HTML ;) )

[ Voor 27% gewijzigd door crisp op 10-03-2005 12:23 ]

Intentionally left blank


Verwijderd

zoals het laatste comment daar zegt: het is dus geen bug, maar gewoon een html gevolg. IE ondersteunt geen xhtml, interpreteerd <script /> als html en dus als <script> waardoor het element niet gezloten wordt en er dus ook niks op de pagina verschijnt (ook niet de kale tekst omdat <script> toevallig een speciaal element is in HTML, met een willekeurig ander element wat niet afgesloten wordt heb je waarschijnlijk minder moeilijkheden (dankzij foutcorrectie is HTML)

@ crisp: het is dus wel valid SGML (Namelijk de NET; null end tag), alleen er wordt idd niks mee gedaan, zie ook http://www.rikkertkoppes.com/thoughts/net-shorttag

[ Voor 18% gewijzigd door Verwijderd op 10-03-2005 12:25 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op donderdag 10 maart 2005 @ 12:23:
[...]
@ crisp: het is dus wel valid SGML (Namelijk de NET; null end tag), alleen er wordt idd niks mee gedaan, zie ook http://www.rikkertkoppes.com/thoughts/net-shorttag
Ik zeg het ook verkeerd. Syntactisch is het correct; de / sluit de tag af. De rest wordt in SGML echter als characterdata gezien; <br /> wordt dus gerendered als <br />

[ Voor 8% gewijzigd door crisp op 10-03-2005 12:35 ]

Intentionally left blank


Verwijderd

<br /> zou gerenderd moeten worden als \n\r> (dus equivalent aan <br>&gt;), aangezien <br/ dus de NET notatie is voor <br>.

in sgml hoeven > characters ook niet altijd als &gt; encoded te worden, dit hoeft alleen maar als er anders misverstanden zouden kunnen ontstaan

Alleen de meeste browsers doen dit dus niet, (amaya wel bijvoorbeeld), wat dus een gelukje is voor de mensen die xhtml als html versturen

[ Voor 37% gewijzigd door Verwijderd op 10-03-2005 13:13 ]


Verwijderd

Misschien interessant om te weten, innerHTML werkt nu wel in de laatste Mozilla trunk versies voor XHTML documenten (en dan bedoel ik echt voor xhtml documenten verzonden als application/dinges).

Verwijderd

Appendix C, niks mis mee.
Pagina: 1