2024. április 27., szombat

Gyorskeresés

SVG vs href

Írta: | Kulcsszavak: svg . href . xlink . szabvány . böngésző . kompatibilitás

[ ÚJ BEJEGYZÉS ]

Megesik az emberrel, hogy egy SVG-n belül szeretne hivatkozni valamire. Pl. <symbol>+<use>, vagy átmenetes kitöltésekhez használt <style>+<linearGradient>, netán egy dropshadow-hoz berakott <def>+<filter>.

Régebben ezzel nem volt gond, a felhasználás helyére bekerült egy xlink:href="#id" attributum, és megvolt az öröm.

Aztán az SVG2-höz kitalálták, hogy az xlink namespace felesleges, legyen csak simán href. Ezzel sem lenne önmagában baj. (Mondjuk attól eltekintve, hogy 2018 óta csak W3C Candidate fázisban van, elsősorban a böngészőgyártók hozzáállása miatt.)

Igen ám, de ők kicsemegézték a számukra szimpatikus dolgokat, és ezeket implementálták is (előre). A Google-nek (Meta) pedig megvan az a jó szokása, hogy a böngészőpiacon 2/3-os többséggel erőből egyoldalúan lenyom dolgokat. Szabványok ide vagy oda. A többiek pedig mehetnek utána, mert a webfejlesztők nyilván elsősorban a piac 65%-ára fejlesztenek/optimalizálnak.

Így történt itt is: A dokumentum hiába SVG 1.0 vagy 1.1, a Chrome a hozzá való XML DTD ellenére konkrétan leköpi az xlink:href-et. Annyira, hogy nem pusztán kihagyja az elemet, hanem hibalapot hoz be "Namespace prefix xlink for href on linearGradient is not defined" üzenettel.

A Firefox hasonlóan, csak a szövegezés más: "XML Parsing Error: prefix not bound to a namespace".

Az Internet Explorer (ha még akad ilyet használó ősember) üres lapot hoz be, és csak a konzolon szól, hogy "XML5660: The specified prefix has not been declared.".

Az Edge felhasználóbarátabb. Üres lap, és a konzol is üres. ( :U )

A sima href (hangsúlyozom, SVG 1.0 vagy 1.1!) az összesben tökéletesen működik. Még a piac ötödét uraló Safariban is.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.