webForumDet fria alternativet

Javascript i xhtml.

JavaScript

10 svar · 695 visningar · startad av nilleonline

Medlem sedan sep. 2006119 inlägg
Frågan#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

Medlem 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å..

Medlem 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.

Medlem sedan aug. 20039 340 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. ;)

Medlem sedan aug. 20039 340 inlägg
#5

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

Medlem 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å..

Medlem 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; }
Medlem 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?

Medlem 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>
  ...
Medlem 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?

Medlem sedan dec. 20042 245 inlägg
#11

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

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)