Usemap i xhtml 1.1

Problem stary jak xhtml1.1. Validator pokazuje: character “#” is not allowed in the value of attribute “usemap”. Przeszukałem wszystko, co znalazło google, ale wszędzie radzą zmienić na xhtml 1.0 co u mnie nie wchodzi w grę. Po usunięciu # w żadnej przeglądarce mapa nie działa (najnowszy FF i Opera, w IE może sobie nie działać…). Czy jest na to jakiś sposób?

Wcześniej miałem podobny problem z lightboxem: rel=“lightbox[1]” wystarczyło zmienić na rel=“lightbox.1”, [] validator uznawał za błąd, z kropką działa idealnie. Czy dla # w usemap jest jakiś zamiennik?

Możesz spróbować przypisać ten atrybut przez javascript, np tak:

Nie jestem pewny czy zadziała w każdej przeglądarce, u mnie na Chromie działa.

U mnie nie działa, nawet na chrome. Robię panel wyboru skórek. Normalnie jest półprzezroczysty, po najechaniu widać cały.

Działający, niepoprawny wg. validatora kod:

[/code]


i z css:

[code].h { display: none } .v { display: block }

W head daj:

W

Wielkie dzięki, teraz działa, a validator nic złego w tym nie widzi. Przerobiłem na:

document.getElementById(‘panel1’).useMap = ‘#panelmapa1’;

Za to znalazł coś jeszcze lepszego:

there is no attribute “target”

Mam nadzieję, że target też się da przypisać JSem :expressionless:

EDIT

działa lepiej niż myślałem, do tej funkcji w onload dorzuciłem:

var elements = document.getElementsByClassName('targetblank');

for (i = 0; i < elements.length; i++){

	elements[i].target = '_blank';}

a wszystkie target="_blank" zamieniłem na class=“targetblank” i validator dał sobie spokój :smiley: passed!

Z tym, że targetu nie powinno się używać, użytkownik ma prawo do wyboru czy woli otworzyć coś w nowym oknie czy w tym samym. Dlatego też nie przechodzi walidacji.