Autor | Zpráva | ||
---|---|---|---|
Jisp Profil |
#1 · Zasláno: 7. 11. 2016, 10:42:08
Kód:
<head><style disabled> p {color: blue;}</style></head> <body><p>TEXT TEXT TEXT</p></body> Pokud však implementuji atribut javascriptem: <head><style> p {color: blue;}</style></head> <body><p>TEXT TEXT TEXT</p> <script>document.styleSheets[0].disabled = true;</script></body> Mohl by mi někdo vysvětlit důvody takového chování? Děkuji. |
||
mckay Profil |
Jisp:
Děkuji za zajímavý dotaz! HTML specifikace pro prvek <style> říká:
<!ELEMENT STYLE - - %StyleSheet -- style info --> <!ATTLIST STYLE %i18n; -- lang, dir, for use with title -- type %ContentType; #REQUIRED -- content type of style language -- media %MediaDesc; #IMPLIED -- designed for use with these media -- title %Text; #IMPLIED -- advisory title -- > Tedy - nezmiňuje žádný atribut disabled . Internet Explorer, jak je u něho již zvykem, se odkloňuje od standardu a tento atribut podporuje a svým způsobem interpretuje, zatímco ostatní prohlížeče standard dodržují a proto neznámý atribut ignorují.
Proč to tedy ale funguje javascriptem? Opět, dle specifikace, HTMLStyleElement (DOM) rozhraní má tuto vlastnost:
interface HTMLStyleElement : HTMLElement { attribute boolean disabled; attribute DOMString media; attribute DOMString type; }; A proto je ji možné použít. Toto chování je v pořádku. Edit: Dodáno poděkování. |
||
Chamurappi Profil |
#3 · Zasláno: 7. 11. 2016, 12:54:08
Reaguji na mckaye:
„Internet Explorer, jak je u něho již zvykem, se odkloňuje od standardu“ Spíš se standard odklonil od Internet Exploreru, jak je již jeho zvykem. Explorer zavedl disabled jako globální atribut dřív, než vyšlo HTML 4.
„zatímco ostatní prohlížeče standard dodržují a proto neznámý atribut ignorují“ To je příliš povrchní důvod, protože spoustu jiných neznámých věcí neignorují (čím dál víc). Nedá se najít nějaké hlubší zdůvodnění? Nějaký konkrétní argument, proč je atribut disabled nežádoucí?
„Opět, dle specifikace, HTMLStyleElement (DOM) rozhraní má tuto vlastnost“
Podle HTML 5.1 už ji zase nemá :-) Je docela matoucí, když vlastnost běžně odvozovaná z atributu nejde vyjádřit atributem. Myslím, že HTML 5 se snažilo tyto divné situace zrušit. |
||
Jisp Profil |
#4 · Zasláno: 7. 11. 2016, 13:34:59
Chamurappi:
Jako výstižný popis situace pokládám tvoji větu: "Je docela matoucí, když vlastnost běžně odvozovaná z atributu nejde vyjádřit atributem." Ale jak je tedy možné elegantně řešit dynamické přepínání mezi několika stylovými šablonami v jedné stránce bez použití disabled? |
||
Tomášeek Profil |
#5 · Zasláno: 7. 11. 2016, 14:02:18
Jisp:
„Ale jak je tedy možné elegantně řešit dynamické přepínání mezi několika stylovými šablonami v jedné stránce bez použití disabled?“ Třeba serverovým scriptem posílat ten stylopis, který chceme využít. Dokonce to bude elegantnější, než tvoje řešení (i v případě, kdyby podpora toho, cos zamýšlel, byla stoprocentní). |
||
Jisp Profil |
#6 · Zasláno: 7. 11. 2016, 15:44:52
Tomášeek:
Potřebuji přepínání do aplikace, která neběží na běžném webovém serveru, takže serverové skripty (např. PHP)nepřipadají v úvahu. Neexistuje jiná varianta (CSS, javascript)? |
||
Tomášeek Profil |
#7 · Zasláno: 7. 11. 2016, 16:23:17
Jisp:
„Neexistuje jiná varianta (CSS, javascript)?“ JavaScript evidentně ano. Zde musíš počítat s eventuální nepodporou při vypnutém JS, jinak by to dle extraktu ze specifikace výše mělo fungovat. |
||
mckay Profil |
Chamurappi:
„Spíš se standard odklonil od Internet Exploreru, jak je již jeho zvykem. Explorer zavedl disabled jako globální atribut dřív, než vyšlo HTML 4.“
Velmi subjektivně si myslím, že to, že výrobce prohlížeče zavede nějaký globální atribut, by neměl být popud k tomu, aby se okolo toho ohnul standard. „To je příliš povrchní důvod, protože spoustu jiných neznámých věcí neignorují (čím dál víc). Nedá se najít nějaké hlubší zdůvodnění? Nějaký konkrétní argument, proč je atribut disabled nežádoucí?“
Já sám jsem povrchní, takže s tímto odůvodněním jsem úplně ok! :-) Ale teď vážně - blokování eventů? Rád se nechám podat. |
||
pcmanik Profil |
#9 · Zasláno: 7. 11. 2016, 17:25:10
mckay:
„Velmi subjektivně si myslím, že to, že výrobce prohlížeče zavede nějaký globální atribut, by neměl být popud k tomu, aby se okolo toho ohnul standard.“ To je naozaj veľmi subjektívne nakoľko schvalovanie a vytváranie štandartov trvá tak dlho že by sme sa nikam nepohli :) Prakticky každá nová vec je najprv impelmentovaná v prehliadačoch než sa vôbec stihne schváliť v štandarte. Preto aj bolo HTML 5 rozdelené na viacero menších sekcií, aby sa urýchlilo schvalovanie. |
||
mckay Profil |
#10 · Zasláno: 7. 11. 2016, 17:34:36
pcmanik:
„Prakticky každá nová vec je najprv impelmentovaná v prehliadačoch než sa vôbec stihne schváliť v štandarte.“ Zeptám se tedy takto: HTML5 vymysleli výrobci prohlížečů? Nebo výrobci prohlížeču implementovali podporu dle draftů, které vymyslelo nějaké konsorcium lidí, kteří se pohybují v návrhu a schvalování standardů? Pokud je první možnost správně, pak jsem ochoten změnit svůj postoj k celé záležitosti. |
||
pcmanik Profil |
#11 · Zasláno: 7. 11. 2016, 17:41:32
mckay:
„Zeptám se tedy takto: HTML5 vymysleli výrobci prohlížečů?“ V podstate áno, v konsorciu W3C má zastúpenie každý veľký hráč na poli prehliadačov. Takže určitý hlas pri smerovaní vývoja tam majú. |
||
Chamurappi Profil |
Reaguji na mckaye:
„to, že výrobce prohlížeče zavede nějaký globální atribut, by neměl být popud k tomu, aby se okolo toho ohnul standard“ Když se podívám na tuto trojici atributů, které jako globální zavedl Explorer 4: disabled , tabindex , title – první z nich neimplementoval nikdo další a zůstal mimo specifikace, druhý z nich implementovali všichni a byl následně zaveden do HTML 5 a třetí z nich byl zavedený do HTML 4 a následně jej implementovali všichni.
Takže raději bych posuzoval, jestli má inovace (tedy zglobálnění konkrétního atributu) smysl z technického hlediska, než její vztah k dávným standardizačním rituálům. „Ale teď vážně - blokování eventů? Rád se nechám podat.“ Sám nevím, proč to ostatní nepodporují. Chtěl jsem tě inspirovat k tomu, abys našel nějakou zajímavou odpověď :-) „Zeptám se tedy takto: HTML5 vymysleli výrobci prohlížečů?“ Samozřejmě. Konsorcium jim ustoupilo až pod nátlakem, protože hrozilo, že roli W3C časem stoprocentně převezme jejich nové uskupení WHAT WG (kde HTML 5 původně vzniklo). Reaguji na Jispa: Můžeš třeba měnit skriptem třídu na společném rodiči a upravit všechny selektory, které ovlivňují měnitelnou část vzhledu, aby závisely na nějaké konkrétní třídě. Je samozřejmě otázka, jak moc se mají různé vzhledy lišit. Tento můj postup dává smysl jen v případě nějakého jednoduchého přebarvení, kde je výrazný společný základ pro všechny vzhledy. |
||
Časová prodleva: 8 let
|
0