Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Atrybut usemap - problem z #
Forum PHP.pl > Forum > Po stronie przeglądarki
chfast
Tworze plik w XHTML 1.1. Jak odnieść się do mapy grafiki (<map>) za pomocą atrybutu usemap skoro nie wolno (według specyfikacji XHTML 1.1) używać w tym atrybucie znaku #.
Szukałem jakiegoś odpowiednika znaku # w znakach specjalnych, tak jak ma to miejsce np. w przypadku & = &amp; .
Niestety nic takiego nie znalazlem.
KaMeLeOn
Cytat
Tworze plik w XHTML 1.1. Jak odnieść się do mapy grafiki (<map>) za pomocą atrybutu usemap skoro nie wolno (według specyfikacji XHTML 1.1) używać w tym atrybucie znaku #.

Wolno używać i jest jak najbardziej dozwolony.
Zgodnie ze specyfikacją XHTML 1.1 nie można używać atrybutu name, należy go zastąpić atrybutem id...
Poprawny zapis przykładowo wygląda tak:
Mapa:
Kod
<map id="moja_mapa">...</map>

Wywołanie (dla img, input, object):
Kod
<img src="obraz.jpg" usemap="#moja_mapa" />
chfast
Cytat
Wolno używać i jest jak najbardziej dozwolony.

Moge się zgodzić, że specyfikacja XHTML 1.1 nic nie wspomina o tym, że znak '#' jest niedozwolony w atrybucie usemap. Ale już przy walidacji dokumentu otrzymujemy błąd:
Cytat
Line 52, column 86: character "#" is not allowed in the value of attribute "usemap"  
 ...mages/logo_group.jpg" alt="" usemap="#logo_group"/></td>


Jednocześnie pojawia się błąd odwołania do nieistniejącej mapy:
Cytat
Line 52, column 86: reference to non-existent ID "#logo_group"  
 ...mages/logo_group.jpg" alt="" usemap="#logo_group"/></td>


Idąc dalej, kiedy zapiszemy dowołanie do mapy bez znaku '#' (czyli np. id="map1" ; usemap="map1") to walidator stwierdza, że wszystko jest w porządku, dokument jest poprawny. Nie ma się jednak wcale z czego cieszyć, bo w takim przypadku przeglądarka (IE) nie radzi sobie z takim odniesieniem i mapa nie działa.

Jeszcze może dodam, że używając XHTML 1.0 Strict można stosować znak '#' w usemap.
Dominik
Tak to prawda. W HTML 4.01 i XHTML 1.0 wartosc usemap byla CDATA a w XHTML 1.1 to jest juz IDREF.
W DTD mozemy przeczytac:
Cytat
'usemap' points to the 'id' attribute of a <map> element,
    which must be in the same document; support for external
    document maps was not widely supported in HTML and is
    eliminated in XHTML.

    It is considered an error for the element pointed to by
    a usemap IDREF to occur in anything but a <map> element.

Mam nadzieje ze sie wyjasnilo.
Dominik
Dla pewnosci dodam jak to powinno teraz byc zrobione.
Kod
<map id="moja_mapa">...</map>


Kod
<img src="obraz.jpg" usemap="moja_mapa" />

Czyli bez #.
Acha i oczywiscie tylko w Mozilli to sie poprawnie wyswietla.
wasik89
A mi w mozilli juz to nie dziala ;] zdaje sie nigdzie juz tak nie pojdzie na nowych wersjach.
Rowniez mam problem z walidacja # i rowniez nie umiem sobie z nim poradzic.
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.