Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript + validate] skryp niezgodny z walidacją
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
idarek
Ostatnio zaczełem przerabiać po mału moją stronę na zgodną ze standardami W3C , i już jedną podstrone zrobiłem prawie całą, jdnakże w walidatorze na stronie http://watson.addy.com/ mam pokazany błąd:

na http://idarek.webpark.pl/galeria.htm
Kod
line #59: value for attribute Start (WhereHash;) of element = should be quoted (i.e. Start="WhereHash;")

line #61: value for attribute + (2;) of element = should be quoted (i.e. +="2;")

line #62: value for attribute (Count (WhereHash;) of element = should be quoted (i.e. (Count="WhereHash;")

line #62: value for attribute < (email.length;) of element = should be quoted (i.e. <="email.length;")

line #69: unknown element <=>.

line #69: <=> cannot appear in the HEAD element.

line #70: no closing </SCRIPT> seen for <SCRIPT> on line 47.


i nie mam pojęcia jak to poprawić, a nie chce rezygnować z tego skryptu na stronie, bo to jest dobry skrypt przeciw spamowi ze strony robotów internetowych. Może ktoś wie jak to poprawić?
kszychu
A próbowałeś zastosować się do wskazówek walidatora? (quoted = ujęte w cudzysłowy)
idarek
tak, ale wtedy skrypt przestaje działać
kszychu
To może zapodaj tutaj ten skrypt, bo link jakiś niedziałający jest.
idarek
link działa... (ten z ../galeria.htm)

no ale oto ten skrypt:
Kod
w <head>



<SCRIPT language="JavaScript" type="text/javascript">

function Transpose(String){

var email ="idarek.prv.pl@webmaster"

var TempBefore = "";

var TempAfter = "";

var NewString = "";

var Start = 0;

var WhereHash = email.indexOf ("@");

for (Count = 1; Count <= WhereHash; Count ++){

TempBefore += email.substring (Start, Count);

Start++

}

Start = WhereHash;

Start ++

WhereHash +=2;

for (Count = WhereHash; Count <=email.length; Count++){

TempAfter +=email.substring (Start, Count)

Start++

}

NewString = TempAfter +"@" + TempBefore;

parent.location = "mailto:"+NewString;

}

</SCRIPT>


Kod
w <body>



<a title="Webmaster" href="JavaScript:Transpose()">Webmaster</a>
kszychu
Może spróbuj po Start++ powstawiać średniki?
idarek
Start++"" tak? to nic nie da, odrazu jak coś wstawie nie tak to skrypt przesdtaje działać
kszychu
Jeśli to " wg Ciebie jest średnik to ja wymiękam :-D

; to jest średnik!

Czyli:

Start++;
idarek
no pomyliło mi sie :)

hm... niestet, nic nie pomogło nadal jest:

Kod
line #59: value for attribute Start (WhereHash;) of element = should be quoted (i.e. Start="WhereHash;")

line #61: value for attribute + (2;) of element = should be quoted (i.e. +="2;")

line #62: value for attribute (Count (WhereHash;) of element = should be quoted (i.e. (Count="WhereHash;")

line #62: value for attribute < (email.length;) of element = should be quoted (i.e. <="email.length;")

line #69: unknown element <=>.

line #69: <=> cannot appear in the HEAD element.

line #70: no closing </SCRIPT> seen for <SCRIPT> on line 47.
kszychu
Na moje oko to masz jeden } za dużo...
idarek
jeśli chodzi ci o ten ostatni to nie jest za dużo, jak go wywale to skrypt nie działa
Pedros
A próbowałeś może wstawić skrypt w
Kod
<!-- <![CDATA[

.

.

.    

]]> -->

</script>


Tak jak jest to np. na wp.pl
Kod
<script language="JavaScript" type="text/javascript">

<!-- <![CDATA[

    if (navigator.userAgent.toLowerCase().indexOf('webtv') > -1) {

  //alert('WEBTV');

    } else if (navigator.userAgent.toLowerCase().indexOf('windows ce') > -1) {

  //alert('POCKET PC');

    } else if (navigator.userAgent.toLowerCase().indexOf('wince') > -1) {

  //alert('POCKET PC')

    } else if (!document.getElementById) {

  top.location.href="index.html?view=index_html";

    }

// ]]> -->

</script>


Z tego co pamiętam, zaleca się wstawiać skrypty w coś takiego, więć powinno działać i walidator raczej się nie czepia...
Draugfor
Cytat
Z tego co pamiętam, zaleca się wstawiać skrypty w coś takiego, więć powinno działać i walidator raczej się nie czepia...


Niezupelnie.
Jesli zalezy nam na zgodnosci ze starymi przegladarkami, skrypty powinno sie wstawiac w znacznikach komentarzy html <!-- -->.
Z kolei nowe parsery xml uznaja to za komentarz i pomina, wiec rozwiazazniem kompromisowym i najlepszym jest umieszczenie skryptu w oddzielnym pliku, co i Tobie, idarek, radze.
Pozdrawiam!
idarek
jak umieszcze ten skrypt w innym pliku to zaraz po odwołaniu się do niego wyłączają się inne, np. data na stronie.... niestety próbowałem różnie umieszczać skrypty i zawsze coś jest kosztem czegoś... a nie znacie jakiegoś skryptu podobnego to tego co podałem powyżej do ukrywania maila przed robotami internetowymi?
dr_bonzo
nie jest to chyba najlepszy sposob na ukrycie maila -- roboty i tak maja dostep do plikow .js, czy skryptow na stronie i moga odczytac wartosc
Kod
var email ="idarek.prv.pl@webmaster"
Jabol
proszę w dalszej części topicu uzywać bbcode (thx hwao). Byłoby miło, gdyby niezgodne posty wyżej zostały również wyedytowane.
Jeżeli postulat nie będzie spęłniony to .... $topic->move("/dev/null"); (albo inne miejsce gdzie będzie bardziej bezpieczny)...
idarek
może i mogą odczytać maila, ale to nie liczne, jak dotąd dostałem tylko 5x spam na adres ze stronki, a jak by wogule nie było skryptu to by była masakra
Dominik
Jesli idze o znaki, w ktorych dozwolone atrybuty to w XHTML oprocz znaku " mozna stosowac '
Ale ale moze przede wszystkim zastosowac sekcje CDATA i wtedy walidator nie powinien sie czepiac.
idarek
ok dzieki, jak będe miał niedługo więcej czasu to nad tym posiedze, a co do znaczków " lub ' to ja mam strone w html a nie xhtml wiec validator sie może czepiać, narazie wszystko bede robił z ", jak naucze sie czegos nowego lub przejde na inny standard strony to nie problem bedzie to zmienić

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.