javascript - błąd wczytania skryptu

0

Witam. Mam problem gdyż nie wiem dlaczego, nawet nie wiem czy to mogę nazwac kompilatorem podaje informację dotyczącą błędu składni (SCREEN: http://www.fotosik.pl/pokaz_obrazek/86d85132c0b4ad4d.html), a kod javascriptu jest taki:

<script type="text/javascript">
// <![CDATA[

   function stock()
   {
   }
// ]]>
</script>
//ODWDOŁANIE SIE DO SKRYPTU W HTML

<script type="text/javascript" src="skrypt.js">
<!--
//-->
</script>
0

Doh. Tagi <script> to się umieszcza w HTML-u. Kod JavaScript to tylko to, co jest pomiędzy tymi tagami. W plikach zewnętrznych (.js) już NIE wklepujesz tagów HTML. Nie piszesz też tych -- zupełnie niepotrzebnych w tym kontekście -- komentarzy JavaScript z CDATA. W pliku skrypt.js powinieneś mieć czysty kod JavaScript, czyli takie coś:

function stock()
{
}

(zauważ brak znaczników <script> z HTML-a oraz brak niepotrzebnych już komentarzy CDATA)

PS. Gdy dołączasz skrypt zewnętrzny, to nie wstawiaj tam komentarzy HTML. Nie ma to najmniejszego sensu. Czyli odwołanie się do skryptu HTML powinno wyglądać po prostu tak:

<script type="text/javascript" src="skrypt.js"></script>

Tu umieściłem wszystko w jednej linijce. Oczywiście, gdybyś znacznik zamykający </script> umieścił w następnej, to też byłoby OK. Po prostu niepotrzebne są te komentarze HTML-owe ().

edit: To może Ci napiszę po co w ogóle ta cała zabawa z CDATA i komentarzami HTML, bo widzę, że tego nie rozumiesz i wstawiasz/wklejasz te rzeczy na ślepo ;).

Chodzi o to, że starsze -- BAAARDZO stare -- przeglądarki nie obsługiwały JavaScriptu i nie rozpoznawały znaczników <script>. Gdy je napotykały, po prostu nic z nimi nie robiły, a tekst pomiędzy znacznikami (czyli kod JavaScript) wyświetlały na stronie. I były sytuacje, że komuś wyświetliło się na środku strony kilkaset linijek JavaScriptu. Dlatego ludzie wymyślili, ze kod JS otoczą komentarzami HTML (). Zawartość komentarzy nie jest wyświetlana na stronie, więc w najgorszym wypadku skrypt nie odpali, ale nie będzie straszył ludzi.

Z sekcjami CDATA kwestia jest podobna, choć tutaj już wkraczają do gry szczegóły parsowania (X)HTML-a. Normalnie w kodzie (X)HTML nie może sobie stać np. znak &. Musi on zostać zamieniony na encję &. W kodzie JavaScript pojawiają się co i rusz znaki &, bo w JavaScripcie jest operator logiczny AND, który zapisuje się za pomocą dwóch znaków & (czyli &&). Więc ludzie zaczęli otaczać kod JavaScript sekcjami CDATA, dzięki czemu parser zostawał poinformowany, że od początku aż do zamknięcia poprzez ma traktować ampersandy i inne znaki dosłownie.

Zauważ, że wszystko to nie ma najmniejszego sensu, gdy kod JavaScript masz w oddzielnym pliku z rozszerzeniem .js. Ten plik w ogóle nie śmieci w HTML-u. Nawet jeśli przeglądarka nie rozpoznawałaby znacznika <script>, to po prostu nie ściągnęłaby pliku ze skryptem. Kod JS nigdy nie zostałby wyświetlony użytkownikowi.

M.in. dlatego stosowanie zewnętrznych plików .js jest lepsze -- nie trzeba się bawić w takie duperele.

0

Ja właśnie zewnętrzny robię. Dzięki za wyczerpującą wypowiedź, też sie zastanawiałem po jaką cholere te komentarze, patrzyłem na necie i zdefiniowałem javascripta, myślałem, że dobrze robię. Tylko z tym problem był bo języki skryptowe mam opanowane do perfekcji, w js wystarczy posiedzieć chwilę i wszystko jasne. Jeszcze raz dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1