Autor | Zpráva | ||
---|---|---|---|
Misanek Profil |
#1 · Zasláno: 7. 8. 2005, 07:36:36
Ahoj lidi,
prosím, poraďte mi někdo, jak v Opeře zajistit přidání pravidla CSS (importRule resp. addRule). Po pročtení všemožných diskuzních jsem řešení nenalezl a dle výrobce Opery ani tuto vlastnost nepodporuje (ani verze 8 - dle www.opera.com). Jestli vás někoho napadá nějaké řešení, jak to obejít (přes document.getElementById to zvládnu taky, ale to bohužel lze změnit až po načtení a zobrazení prvku - a to přeblikávání se mi fakt nelíbí...), budu vděčen. |
||
Oswald Profil |
#2 · Zasláno: 7. 8. 2005, 08:10:04 · Upravil/a: Oswald
Tak tohle mě na slečince taky dost štve... Nicméně, i tohle jde obejít:
|
||
peta Profil * |
#3 · Zasláno: 7. 8. 2005, 09:17:20
Misanek Proc to chces? Vetsinou to lze obejit hackovanim s podtrzitky.
Treba mas nejaky prvek, ktery je nutne pro IE dat jako display:inline-block . FF to zobrazi spravne, ale (stara) Opera si to zobrazi po svem spatne. Finta je v tom, ze se to ma zobrazit jako block a ne inline (ala opera). Cili: display:block;_display:inline-block; Opera, FF blok, IE inline-block a vse je oki |
||
Misanek Profil |
#4 · Zasláno: 7. 8. 2005, 11:49:46
oswalde díky moc, určitě vyzkouším...jen ještě takový jeden dotaz: co když to pravidlo zase budu chtít odebrat? (nebo v opeře, pokud ho chci změnit nemusím původní odebírat?)
peto chci to kvůli rozbalovacímu menu a resizingu do celého okna prohlížeče...snažím se nějakým způsobem kompletně předělat framy na CSS pozicing :-D (bez komentářů, že jsem cvok - to já vím už dávno ;-) kdyby jste se na to chtěli náhodou podívat, zde je link (ale je to pracovní verze teprve pár dnů stará, takže prosím moc nerejte, že to nefunguje, zatím si hraju jen s layoutem) http://beta.michaldlouhy.name |
||
peta Profil * |
#5 · Zasláno: 7. 8. 2005, 13:33:10
zrejme to melo byt http://beta.michaldlouhy.cz/
ten tvuj mi nejak nefunguje. Jen mi nejde do hlavy, proc pro operu musis mit neco jinaci. Ukaz presne ten konkretni problem, treba by to slo resit jinak. |
||
Leo Profil |
#6 · Zasláno: 7. 8. 2005, 16:35:09
Podpora JS v Opere je naprosto jak to rict slusne, *******, Leo
|
||
Oswald Profil |
#7 · Zasláno: 7. 8. 2005, 20:41:35
Misanek: Bude to tam jak text, takže replace(), nebo přidat nové a tím to přebít nebo změnit class, ...
Leo: Tohle platilo kdysi. Jediný, kde má Opera ještě co dohánět, je právě modul Style. Jinak ECMAScript jako takový zvládá naprosto v pohodě, stejně tak DOM2 Core či Events. . |
||
Leo Profil |
#8 · Zasláno: 7. 8. 2005, 21:25:59
Kdyz ono je core a ecmascipt na web jaksi malo, Leo
|
||
Misanek Profil |
#9 · Zasláno: 8. 8. 2005, 23:52:11 · Upravil/a: Misanek
peta: spravne je http://beta.michaldlouhy.name (pravděpodobně pánům Šimůnkům zase nejel server) potřebuji pro Operu něco extra, protože všechny ostatní majoritní prohlížeče (MSIE 6, FF, Mozilla, Netscape) jsou schopny přidat a odebrat CSS pravidlo, Opera ne...
Oswald: moc díky za snahu, ale na tom Tvém návodu se mi nelíbí jedna věc (sorry, nemyslím to zle) a to totiž, že používám DOCTYPE HTML 4.01 strict, čímž se mi vložením tagu style do prvku body zruší validita (i když mi možná řekneš, že na validitu házíš bobek ;-) Další problém je pak v tom, že ten script mám vložen a zpracován v hlavičce dokumentu, kam se (aspoň pokud vím) nic vložit nedá Script vypadá následovně, pokud ho někdo budete schopen upravit do té míry, aby fungoval i v Opeře, budu moc vděčen...případně jsem ochoten se domluvit i na nějaké finanční odměně (script musí být vložen a zpracován v hlavičce html souboru - ještě před zpracováním prvku body a kód statického i generovaného souboru musí být validní pod HTML 4.01 strict)
jako příklad ještě uvádím řádek, kterým pak měním pravidla (příklad pro prvek body, místo body může být jakýkoliv tag, třída nebo ID)
ještě jednu věc jsem zjistil, že Opera neumí :-( document.getElementByTagName document.getElementByClassName ono document.getElementById taky není všespasitelné (případně je to pak zbytečně složité určovat pro skupinu prvků vlastnost pro každý zvlášť) a asi je taky nějaká chybička ve vykreslovacím jádru...při změně vlastností nezobrazí někdy změněnou vlastnost na celý prvek, ale jakmile se shodí okno do lišty nebo se přes to otevře jiný program, tak se to hned zpraví... |
||
Fred Profil |
#10 · Zasláno: 9. 8. 2005, 00:09:09 · Upravil/a: Fred
1/Proč by se měla jako zrušit validita
2/mám vložen a zpracován v hlavičce dokumentu, kam se (aspoň pokud vím) nic vložit nedá Proč ne ? 3/Na takovýhle blbiny je toho pěkného scriptu od Oswalda poněkud škoda, co takhle použít nějaké jednoduché show/hide a normální seznam menu, třeba suckerfish dropdowns přepsané na onclick. 4/Mimochodem ve firebirdu mi to nefunguje,proklikává mi to na ty přebitý odkazy, kde ty stránky nejsou. Když už je tam <a href="nekam.html" onclick="nejakyscript();return false;"> proč tam není nekam.html, kdyby to nevyšlo? |
||
Oswald Profil |
#11 · Zasláno: 9. 8. 2005, 00:32:59 · Upravil/a: Oswald
Misanek
- validita: script najde první element link (var sheet), pro Operu se při první použití sheet.insertRule vytvoří el. style a ten se přidá na konec rodiče toho elementu link, to znamená do sekce <head>, takže to validní je. - vkládání do head: jde to ještě jednu věc jsem zjistil, že Opera neumí :-( document.getElementByTagName document.getElementByClassName Ani se nedivím :) Metodou getElementByTagName jsi nejspíš myslel getElementsByTagName. Metodu getElementByClassName si budeš muset napsat sám, protože zkrátka neexistuje. |
||
Misanek Profil |
#12 · Zasláno: 9. 8. 2005, 06:11:50
Oswald: chlape jsi zlatej, díky moc
Fred: 1) pokud není kód validní, tak nebude ani validní dynamicky vygenerovaný (prvek styl se v HTML 4.01 strict nenachází) 2) o tom vložení do hlavičky jsem měl nejspíš špatné informace 3) každej tomu říká jinak, někdo blbiny, někomu to vyhovuje, to je individuální názor (show hide bych použil na menu, ale ne, když chci měnit celý layout - to pak nechutně přeblikává) 4)kam bych měl dát ještě to nekam.html? aspoň podle toho, co pár předních českých webdesignerů tvrdí ve svých publikacích, měl by takhle napsaný script fungovat, a pokud bude vypnutá jeho podpora nebo nepůjde zpracování, měl by se provést standartní odkaz |
||
Leo Profil |
#13 · Zasláno: 9. 8. 2005, 10:20:44
"pokud není kód validní, tak nebude ani validní dynamicky vygenerovaný (prvek styl se v HTML 4.01 strict nenachází"
Za prve - validitu stranky po uprave JavaScriptem nemate jak zkontrolovat, a pokud prohlizece neodmitnout nevalidni dynamicky generovane html zobrazit, neni problem. A za druhe, HTML 4.01 Strict MA atribut style: http://www.w3.org/TR/html4/strict.dtd Leo |
||
Fred Profil |
#14 · Zasláno: 9. 8. 2005, 11:36:30
měl by se provést standartní odkaz: Ten tam právě není. Někam.html byl příměr.
|
||
Misanek Profil |
#15 · Zasláno: 9. 8. 2005, 13:19:56 · Upravil/a: Misanek
Leo: nedalo mi to a podival jsem se, co tu mam DTD HTML 4.01 strict z webu w3c vytisteno...a tam fakt neni element style zminovan (tak kde uz ma brat clovek korektni informace, kdyz ani w3c neumi udelat specifikaci :-( validitu vygenerovaneho kodu samozrejme nemohu overit, ale snazim se to delat zpusobem, jako kdybych vygenerovany kod ulozil do souboru a ten pak zvalidoval...
Fred: mozna se jednalo o verzi, u ktere jeste odkazy funkcni nebyly, protoze jsem nemel hotovy script...nyni uz je tam na zýacatku kazde sekce menu pokusny odkaz (nevede na jiny dokument, ale scrtipt funguje a do URL predava parametry, ktere pak nove nacteny soubor zpracuje... |
||
Leo Profil |
#16 · Zasláno: 9. 8. 2005, 13:21:11
Nevim, co mate vytisteno, ale v tom odkazu co jsem vam poslal, a coz je evidentne DTD pro strict, style evidentne je, Leo
|
||
Misanek Profil |
#17 · Zasláno: 10. 8. 2005, 09:47:58
Oswald: tak jsem vyzkousel ten tvuj script a bohuzel, at jsem delal, co jsem delal, tak proste nefunguje :-( sice mi opera nevyhodi zadnou chybu (coz je mozna naopak skoda, by clovek aspon vedel, co je spatne), ale proste pravidlo nepouzije, i kdybych se na hlavu postavil :-( nezvladnul bys prosim udelat script trebas jen pro Operu tak, aby fungoval? s tim, ze fci bych volal napr. nasledovne: onClick="styluj('#menu','background-color: #ff0000;');"
fakt staci jen pro tu Operu, zbytek mam vyresen...predem moc diky za snahu |
||
Misanek Profil |
#18 · Zasláno: 10. 8. 2005, 11:15:00
ještě jeden poznatek: Opera opravdu nezvládá getElementsByTagName (aspoň u elementu body)
|
||
Oswald Profil |
#19 · Zasláno: 10. 8. 2005, 11:55:02
Misanek
Když jsem to psal, měl jsem za to, že insertRule se volá přímo nad styleSheetem, ale ono se volá nad styleSheet.rules. Proto jsi to možná nerozchodil. Tohle si přidej do tý svojí funkce někam, kde odchytáváš Operu a mělo by to fungovat (nezkoušeno):
getElementsByTagName('body')[0] vrátí body a funguje to nejenom v Opeře, ale snad úplně všude :) Jinak doporučuju nastudovat si nějaký články třeba na Intervalu apod. |
||
Misanek Profil |
#20 · Zasláno: 10. 8. 2005, 13:19:58 · Upravil/a: Misanek
Oswald: studoval jsem toho dost, ale JS není zrovna mou silnou stránkou :-( už je mi jasné, proč mi nefungovala ta fce getElementsByTagName u body...jsem totiž ***** a nedal jsem tam číslo toho elementu
je možné řádek operaStyle.setAttribute('type', 'text/css'); nahradit takto operaStyle.setAttribute('type', 'text/css', 'media', 'screen'); aby se to aplikovalo pouze na výstup na monitoru, nikoliv na tiskárnu? |
||
Misanek Profil |
#21 · Zasláno: 10. 8. 2005, 13:26:05
jééé, to je hezký, jsem použil sprosté slovo a ono ho to samo nahradilo hvězdičkami...to se mi líbí ;-)
|
||
Misanek Profil |
#22 · Zasláno: 10. 8. 2005, 13:48:13 · Upravil/a: Misanek
Oswald: funguje to!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! :-)
sice jsem musel ještě přidat řádek var operaStyle, ale to už mi docvaklo máš u mne obrovskou pusu :-D (ne, to byl samozřejmě jen fór), ale metr piv nebo flašku klidně |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0