ugrás a tartalomhoz

Javascript változóba írt <script> tag hibát okoz

Anonymous · 2006. Dec. 13. (Sze), 21.40
  1. var str='<?xml version="1.0" encoding="utf-8"?>'+  
  2. ...  
  3. ...  
  4. '<script type="text/javascript" src="adatok.js"></script>'+  
  5. ...  
  6. ...  
a kódrészlet tkp egy weboldal js változóban, de
a <script> tag-es sorra mindig azt írja ki: unterminated string literal

pedig szerintem minden rendben van. Mi lehet a baj?
 
1

Tanulság

ukrán · 2006. Dec. 13. (Sze), 22.49
Ez egy tanulságos probléma, amelybe már én is belefutottam. Abból adódik, hogy először parszolódik a SCRIPT tag, és aztán kezdődik a script tényleges feldolgozása.

Úgy védekezhetsz ez ellen, hogy kikommentálod a szkripted

<script>
<!--
//szkripted
//-->
</script>
2

nem megy

Blackfriar · 2006. Dec. 13. (Sze), 23.02
  1. '<script type="text/javascript" src="adatok.js"></script>'+  
  2. '<script type="text/javascript">'+  
  3. <!--  
  4. 'var temp=document.menu.menu2;'+  
  5. 'var temp1=document.menu.menu1;'+  
  6. 'function kiir(ertek) {'+  
  7. 'var adat = new Array("Baranya","Bács-Kiskun","Békés","Borsod-A-Z","Csongrád","Fejér","Győr-M-S","Hajdú-Bihar","Heves","Jász-N-Sz","Kom.-Eszt.","Nógrád","Pest","Somogy","Szab.-Sz-B","Tolna","Vas","Veszprém","Zala");'+  
  8. 'temp.options.length=0;'+  
  9. 'for (a=0;a<group[ertek].length;a++){temp.options[a]=new Option(group[ertek][a][0],group[ertek][a][1])};'+  
  10. 'if (ertek==0 || ertek==20 || ertek==2 || ertek==8) {document.getElementById("lat").innerHTML="&nbsp;";document.getElementById("hely").innerHTML="&nbsp;";parent.main.location="welcome.htm";return;};'+  
  11. 'if (ertek==21) {document.getElementById("lat").innerHTML="&nbsp;";document.getElementById("hely").innerHTML="képek csak úgy";parent.main.location="kepek.htm#kepek";}'+  
  12. 'else {document.getElementById("lat").innerHTML="Látnivalók";document.getElementById("hely").innerHTML=adat[ertek-1]+" megyében";parent.main.location=temp.options[0].value;}'+  
  13. '}'+  
  14. 'function betolt() {'+  
  15. 'if (temp.options[temp.selectedIndex].value=="") {return};'+  
  16. 'parent.main.location=temp.options[temp.selectedIndex].value'+  
  17. '}'+  
  18. -->  
  19. '</script></body></html>';  
3

nem a változóban...

ukrán · 2006. Dec. 13. (Sze), 23.11
Nem a változóban kell megadni a html kommenteket, hanem az ajánlás szerint a HTML SCRIPT tag-ek között.
  1. <html>  
  2. <head>  
  3.  <script>  
  4.  <!--  
  5.     ide rakhatod a szkriptedet, amely változójában már lehet másik SCRIPT tag  
  6.  //-->  
  7.  </script>  
  8. </head>  
  9. <body>  
  10.  akármi  
  11. </body>  
  12. </html>  
4

nem ez "a" megoldás

Bártházi András · 2006. Dec. 14. (Cs), 08.44
Ezzel több probléma is van (időm hiányában nem részletezném), az igazi megoldás, hogy elfelejti az ember a HTML kódba beágyazott scripteket. Egy külső fájlba kell tenni ezeket, és nem lesz semmilyen probléma. Egyébként nem a megjegyzés használata, hanem az escape-elés lenne a megoldás, azaz < helyett &lt; írása.
5

Még egy hekk

vbence · 2006. Dec. 14. (Cs), 12.45
A konkrét helyezttől függően hazsnálhatod vagy nem, de bővítheted eszköztáradat ezzel is:
  1. var str = '<s' + 'cript>....</s' + 'cript>';  
Csúnya megoldás meg minden, úgyhogy nem tőlem hallottad...