webForumDet fria alternativet

Javascript i xhtml.

10 svar · 693 visningar · startad av nilleonline

nilleonlineMedlem sedan sep. 2006119 inlägg
#1

Jag har ett script på min sida som fungerar helt korekt på sidan så länge jag skickar det som text/html. Kolla på sidan i IE så får ni se. Men när jag lägger till en xml deklaration i dokumentet så fungerar scriptet som det ska (om man väl klickar på det) men de behövs typ "aktiveras" för att fungera? men sen fungerar det bra.

Hur löser jag det problemet, så scriptet är "aktiverat" direkt?

Kolla själv på http://www.nilleonline.com/test2.asp

Här är scriptet: http://www.nilleonline.com/js/scripts.js

nilleonlineMedlem sedan sep. 2006119 inlägg
#2

Ingen som vet hur man fixar? jag försökte googla men vet inte vad jag ska söka på..

zcorpanMedlem sedan dec. 20042 245 inlägg
#3

Om det fungerar korrekt utan XML-deklaration är det väl bara låta bli att använda XML-deklarationen? Den är ändå meningslös i text/html... gör bara så att IE6 går i quirks mode.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Problemet skulle kunna ligga i att du använder document.write, som är deprecated i XHTML Strict. Jag vet inte om IE7 är kompetent nog att fatta det, men mozilla fattar det definitivt. Jag rekommenderar dig att helt enkelt ersätta document.write-koden med att lägga in motsvarande HTML-kod i din HTML-fil:

<style type="text/css">
.submenu{display: none;}
</style>

Detta är dock kanske inte så snyggt för folk som har javascript avaktiverat. Nästa steg kanske är att göra ett meny-skript helt med CSS. ;)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

För övrigt håller jag dock med zcorpan om att du kan utesluta xml-prologen, av ovan nämnd anledning.

nilleonlineMedlem sedan sep. 2006119 inlägg
#6

nitro2k01

Tack! Tänkte inte på det.. Finns det någon anledning till att document write inte fungerar? Men anledningen till att det är i javascriptet är för att det ska fungera även utan javascript! Om jag sätter display:none i css filen så kommer det inte fungera för de som har css men inte javascript.

zcorpan

Inget problem i IE eftersom jag inte använder xml-deklaration då..

zcorpanMedlem sedan dec. 20042 245 inlägg
#7

document.write är inte depreated, det har bara inte specifierats hur det ska fungera i XML än, och som det fungerar i HTML är problematiskt i XML eftersom man då inte kan veta om dokumentet är välformat eller inte.

Hur som helst är det är det lättare att lägga till en klass på body med javascript så kan du ha olika stilar för JS på och JS av.

document.body.className += " hasjs";
/* utan js */
.submenu { }

/* med js */
.hasjs .submenu { display:none; }
nilleonlineMedlem sedan sep. 2006119 inlägg
#8

zcorpan skrev:

document.body.className += " hasjs";

Yes! Men jag är typ helt grön på javascript. Vart stoppar jag in scriptet? Ska jag stoppa in det i body tagen direkt eller? Hur ser hela scriptet ut?

zcorpanMedlem sedan dec. 20042 245 inlägg
#9

Tex:

...
 <body>
  <script type="text/javascript"> 
   if (document.getElementById) // eller vad nu ditt skript är beroende av
     document.body.className += " hasjs";
  </script>
  ...
nilleonlineMedlem sedan sep. 2006119 inlägg
#10

zcorpan skrev:

...

Det fungerar bra i FF men jag får det inte att fungera i andra webbläsare. Varför? Går det att lösa på annat sätt?

zcorpanMedlem sedan dec. 20042 245 inlägg
#11

Kör du skriptet efter <body>-taggen?

131 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)