Objektový model IE vs. Opera

To se to tu pěkně vyvinulo. Ale nedozvěděl jsem se nic (až na názor na Lukasikovy stránky a to jsem stejně věděl, takže nic nového :-?)

Chtěl bych obsáhnout co nejvíce prohlížečů, IE už moje stránky zvládají, NN je u mě až poslední. Opera je celkem perspektivní prohlížeč, a proto se ptám znovu: Podporuje vůbec DHTML? Objektový model CSS? Já myslel, že to snad už po těch letech JE standard.
Opera trochu, NN je na tom lépe... počkej, mám teď operu, tak to zkusím^_^.
Malinko jsem to poravil, ale pod operou to stejne nefaka...
<Script language="javascript" type="text/javascript">
<!--
function GetElement(e)
{
if(document.all) return document.all[e];
if(t = document.getElementById(e)) return t;
else return document.getElementByName(e)[0];
}
// -->

function zjeveni(obrazek)
{
GetElement(obrazek).style.display = "";
}

function skryti(obrazek)
{
GetElement(obrazek).style.display = "none";
}
</SCRIPT>




<A href=javascript:skryti("obrazek")>Skrýt</A><BR>
<A href=javascript:zjeveni("obrazek")>Odkrýt</A><BR>

<img src="http://www.webzdarma.cz/images/logo.gif" name=obrazek>
Bohužel musím říct, že Opera nepodporuje DHTML aspoň jsem to někde čet, možná to je deinformace, CSS opera podporuje.
NN je na takové věci dost starej -> nepodporuje nic nebo jen částečně.

Tomík.
Tomíku, Tomíku. U jaké verze si prosímtě přestal existenci NN vnímat? 4.x, 1.0, nebo si tento browser viděl na obrázku a při jeho hodnocení vycházíš z toho co jsi už někde četl ve stejně smysluplných příspěvcích jako je ten tvůj? Opravdu by mě zajímalo co jste si s Netscapem udelali :-)? Pokud má být tato diskuse trochu smysluplná, pokus se uvést několik příkladů těch prověřených a smysluplných standardů které podle tebe (AKTUÁLNÍ) verze mozilly nepodporuje? Zmiňoval jsi DHTML :-/ a CSS ale to jsi nemohl myslet vážně, že?
Css relativně podporuje, ale moc toho taky nepodporuje (Opera). NN nevím netestoval jsem, jinak s DHTML na tom taky není nějak moc dobře....
>> Lukasik "...s DHTML na tom taky není nějak moc dobře...."
Tady je třeba si uvědomit, že DHTML v podstatě není nic víc než reklamní označení několika technologií dohromady jako jsou CSS oběktový model klientské skripty apod. Tyto technologie jsou většinou otevřenými standardy, jejichž použití na více platformách (browser/os) nic nebrání. U NN či opery se problémy objeví zejména na těch stránkách, které s oběktovým modelem DOM nejsou kompatibilní (pracují s objektovým modelem starších IE), a/nebo jejichž skripty jsou psány v některém z pochybných jazyků jako je VBScript.

Ale abychom se vrátili k tématu: Změnu stylu k nějakému objektu např. obrazek.style.height="150px"; jsem si odskoušel i v pozměnené variantě s použitím W3C doporučené funkce setProperty z CSS2 takto obj.style.setProperty('height','150px',null); a narozdíl od NN6+ kde fukce fungovala bez problému mi Opera odmítla neznámou funkci vykonat a IE projistotu nedělal nic. Takže jak se zdá tato záležitost zřejmě čeká v opeře na implementaci stejně tak jako starší způsob obrazek.style.height="150px";. V implementaci této funkce do IE vůbec nedoufám, chytří hoši z MS jistě vymyslí lepší řešení :-). Na http://www.xs4all.nl/~ppk/js/version5.html najdete podrobnější test kompatibility jednotlivých browserů s DOM, a opera z testu nevychází zrovna nejlépe, a i když se jedná o Operu v 5.0, zdá se, že se situace nezměnila tak jak by bylo potřeba.
kurňa, hoď to do IE 6.0 a nedělej z nás blbce.
<img id=obrazek src="http://www.webzdarma.cz/images/logo.gif">

<Script language=javascript>
obrazek.style.height="150px";
</Script>

A navíc mám takový dojem, že tohle umí používat IE už
od verze 4.0 Opera mi todlensto vůbec, ale vůbec nepřekousla....
ja mam nazor na toto tema takovy
jen malo skriptu urcenych pro jediny brouswer je mozno bez upravy pouzit v jinem a malo kdo dokaze napsat skript, ktery je usity namiru treba 5 prohlizecum zaroven. (ja to tedy neumim).
proto si myslim ze kdyz se nekdo vykasle na JS a k oziveni stranek pouzije treba php, asp, cgi.... nic neskazi a nemusi resit problem jestli se astranka zobrazi zrovna v ... .
Napsat jeden skript pro 5 prohlížečů je nemožné, ale dá se napsat pět různých skriptů. Ale přesouvat obrázky po ploše se v Opeře prostě nepovede a nepovede. Nebo někdo ví jak?

Opravdu úroveň, tahle debata. Nadáváte na Operu a přitom příklad nedává smysl:

<script language="JavaScript">
function zjeveni(obj)
{
obj.style.visibility = "visible";
}
</script>
.
.
.
<img src="..." style="visibility:hidden" onclick="zjeveni(this)">
.

Jak můžete dát událost "onlick" na něco, co není vidět? :-O Takhle to NEMůŽE chodit ani v MSIE (jako že to samozřejmě nechodí). Zkuste to obrátit, do základní vlastnosti dejte visible a do JS hidden, chodí to jak v MSIE tak v Opeře bez problémů.

Možná to měl bejt jinej příklad, ale debata nad tímhle nedává smysl (je vidět, že si to nikdo nevyzkoušel ani pod MSIE - hmmm). Rád poradím (v rozdílech DOM u MSIE, NN, Netscape, Mozilla, Opera...), když dáte SPRÁVNEJ nefunkční příklad, ale spíš na www.builder.cz...
Ale povede :-) Dejte příklad na www.builder.cz a já Vám ho upravím aby chodil jak pod MSIE, tak i pod Operou, ba i pod NN 4.x, Mozillou, Netscape 6.x... :-)
> Dejte příklad na www.builder.cz a já Vám ho upravím aby chodil ...

A nemel bys spis nejakej link na clanek, kde je tohle know-how popsany? ... nerad bych te zacal bombardovat tunami JS kodu :)))

Radek
a proc nam to nechces vysvetlit tady? tady neni to spravne obecenstvo, ktere by ocenilo tve umeni? :-))))

m.s.
Tak luštit tuny kódu opravdu nehodlám, já myslel že se tu objeví nějakej jednoduchej příklad. Říkáš lítání obrázku? Co třeba tohle:

http://www.dynamicdrive.com/dynamicindex3/bubble.htm

Funkční je to na 100% u: MSIE4+, NN4.x, Netscape6+, Mozilla (i starší verze - např. 0.7), Opera (i starší verze - např. 5.0) - osobně odzkoušeno na všech těchto prohlížečích - tedy včetně Opery 5.0 i Opery 6.0 - FUNGUJE!

Taky se samozřejmě učím z příkladů, není nic poučnějšího a na naučení rychlejšího než jsou praktické příklady :-) Pak už to jde samo, neboť těch odlišností (v pojetí DOM, objektů a vlastností) není tolik, opravdu ne. Dále stačí znát "neplechy" NN4.x (při čem se zasekává, co neumí a jak toho většinu obejít), že Netscape6+ a Mozilla se tak moc od sebe neliší, rozdíly MSIE verzí 4,5,6, a ještě třeba Opery5 a 6.
http://www.dynamicdrive.com/dynamicindex3/bubble.htm

Opera Build 1107 (v.6.03) Platform Win32/System Windows 98

bublinky nelitaji...

m.s.
IE build nevím, taky ne Platform Win32/System Windows XP

bublinky lítají:-).
Opera Version 5.01 Build 840 Platform Win32/Windows 98
Opera Version 6.05 Build 1140 Platform Win32/Windows 98

U obou bublinky lítají (hezky, rychle a správně) :-)

Nemáte tam JavaScript vypnutý? ;-) (menu:FILE-PREFERENCES-MULTIMEDIA)
Já osobně používám IE. Stránky píšu tak, aby přesně odpovídaly standardu W3C. Problém je v tom, že byť Microsoft dost diktuje standard, jednou tu tato domluva je a je třeba, aby se jí drželi všichni, což NN a Opera NEDĚLAJÍ (nebo spíš o několik verzí později). Dostal se mi ale do ruky prohlížeč, kterej byl postavenej jen kvůli testování stránek, jestli jsou zobrazitelný všude a musel jsem ho smazat, jelikož kromě plaintextu jsem v něm nezorazil nic.

Soje stránky teda ladím v IE a pak je vždy zobrazuji i v Opeře. Jde mi o to, aby stránky byly ZCELA FUNKČNÍ VŠUDE s tím, že některý vychytávky, zajíšťující jen uživatelský komfort

Proč mám IE a ne NN nebo O? NN mě naštval, když mi po standardní instalaci zacpal počítač spoustou programů třetích stran. Dále je dost náročný a dle mého názoru pomalý. Takže jsem přešel na Operu. Podle mě rychlejší není, jen možná o trochu líp využívá casch, ale jinak mě běhá pomaleji. Verzi 6 jsem již byl línej instalovat a tak mám jen 5 na ladění, byť nic nepodporuje (mizerně styly a JScript).

4Admin: Píšeš, že stránka, která je jen pro jeden prohlížeč nemá cenu na ni ani chodit. Dle ročních statistik z mých stránek bylo na každých 500 návštěvníků 499 z IE a 1 z O nebo NN. Přesto, že dělám stránky i pro toho jednoho člověka, dělám dost práci navíc, jelikož ten jeden je fakt málo - ALE přesto to dělám.

AdDotaz: Jde o to, že IE používá JScript a NN JavaScript. Rozdíli jsou malé ale právě ve věcech stylů atd. se ve verzích 1.1 dost lišily. 6 Verze všech prohlížečů by ale měly tyto věci zvládnout. Je to ale fraška, když oba jazyky dělají tutéž funkci, ale mají pro ně jiný název vlastnosti, takže to musíte vždy používat duplicitně a hrozně ošetřovat

AdIE: Proč nekritizuji vliv Microsoftu na W3C? Protože většinu věcí, co do standardu přinesli bylo užitečnejch a dost vychytanejch.
> Nemáte tam JavaScript vypnutý? ;-) (menu:FILE-PREFERENCES-MULTIMEDIA)

Tak tam najdete leda blbosti. Správně je to menu: FILE-PREFERENCES-PLUGINS

Ad funkčnost: Nevím, v čem to zkoušíte, ale tomu dotyčnýmu to fungovat prostě nemůže pokud jeho prohlížeč nepodporuje vlastnost "style" prvku "HTMLElement", což je v JavaScriptu 1.2 podporuje MSIE4+, zatímco Navigator 4 (pod což spadá i Opera) tam má jen jednu jedinnou ubohou metodu "handleEvent(cíl)"

Mě to taky nefunguje, ale je možný že zakopanej pes je někde jinde, jelikož přestože mám zapnuto hlášení chyb (v Opeře), tak se mi viditelnost nezmění ale přitom to nenahlásí žádnou chybu (což při nepodporování vlastnosti "style" by mělo. V MSIE to chodí bez problémů. Takže zůstává otázka podpory CSS. No nevím, ale rozhodně bych tady tak nerozváděl, že to musí jít všude. Fakt nemusí.
Oprava: tak jsem zjistil, že v CSS to není, jelikož to podporujou všechny tři od 4 vejš, takže zpět k skriptíkům, ale nevím, co se dá na tak jednoduchým skriptu zkazit (this.style.visibility="hidden"), zvlášť, když to nehlásí žádnou chybu, vše je zapnutý a stejně to nefunguje (v MSIE funguje).

:-)
(menu:FILE-PREFERENCES-MULTIMEDIA) je to opravdu zde...
mam pro vas mnohem jednodussi volbu. stiskem magicke klavesy F12 se dostanes ke vsem dulezitym volbam, ktere behem brouzdani muzes potrebovat menit :-)

(nezda se vam to jako dalsi user-friendly plus :-))) chci zakazat pop-up - stisknu F12. chci povolit, stisknu F12.... vadi mi debilni javaskript zakazujici tlacitko na mysi - stisknu F12... atd. i kdyby to IE umel, urcite by to bylo schovane za deseti dalsima nabidkama :-)))

m.s.

p.s. nicmene mi ty bublinky nefunguji (a ani nebudu patrat proc, mam ted dulezitejsi veci na starost - bourka pridala starosti se siti, do znojma pelasim na vinobrani a pokud se zadari, tak na tyden odjedu relaxovat do hor a zhluboka dychat :-)
Tak jinak, no :-)

Vypnutí a zapnutí JavaScriptu je v Opeře v menu:

ver 5.x: FILE-PREFERENCES-PLUGINS
ver 6.x: FILE-PREFERENCES-MULTIMEDIA

A pokud jde o bublinky, jak jsem psal, mně to chodí jak ve verzi 5.01, tak ve verzi 6.05, kde máte problém vy nevím.
Ale samozřejmě mě jeden napadá:
klávesa F12 (ver 6.x) nebo menu:
ver 5.x: FILE-PREFERENCES-CONNECTIONS-"Browser identification"
ver 6.x: FILE-PREFERENCES-NETWORK-"Browser identification"
a máte tam "Identify as MSIE 5.0" místo "Identify as Opera". Pak se ale nedivte.

Pokud ne, už mě nenapadá nic. Ale vsázim na to - zkoušel jsem to a samozřejmě to takhle nechodí (i když je jednoduchý trik jak ten skript poupravit tak, aby si tohohle nastavení u Opery tak jako tak nevšímal - ale autor to v těch bublinkách bohužel neudělal).
Účel zapínání na "Identify as MSIE 5.0" je jenom kvůli webmasterům, kteří na Operu a jakýkoliv jiný prohlížeč než MSIE kašlou, a dál si vesele používají jenom "document.all" - přičemž ani Opera s tímhle nastavením stejně někdy nepozná, jakou že DOM vlastnost nebo funkci má dotyčný na mysli a občas i tak hodí chybu.
mas pravdu :-) je to nastavenim identifikace klienta. zustalo mi to tam preple, prave kvuli jednomu chytremu js, ktery me urcoval, jak a cim mam surfovat...

m.s.