Niedziałające skrypty JavaScript

w dziale Opera
DEXTERtm napisał(a):

Wytłumaczcie dlaczego poniższe skrypty działają w IE5+; IE6+; NN6+ (Mozilla) - czyli de facto wszędzie -, a w Operze 7+ nie :?:

Skrypty znajdują się tutaj tutaj.
Konkretnie chodzi o nieprawidłową zmianę tła na pasku nawigacyjnym na górze, oraz o znikające obramowanie na przyciskach w dokumencie ("szukaj", "głosuj" itp.) – które nie znika pod Operką :roll:

Tło:
[PHP]function przyciskZmien1(dom) {
dom.style.borderLeft = 'none';
dom.style.borderTop = 'none';
dom.style.borderRight = 'none';
dom.style.borderBottom = 'none';
dom.style.margin = '0px 3px 3px 0px';
}
function przyciskZmien2(dom) {
dom.style.borderLeft = '2px solid gray';
dom.style.borderTop = '2px solid gray';
dom.style.borderRight = '1px solid black';
dom.style.borderBottom = '1px solid black';
dom.style.margin = '0';
}[/PHP]
Obramowanie:
[PHP]function nawTlo(ID) {
var DOM = document.getElementById('nawDzial'+ID).style;
if(DOM.backgroundImage == "url(grafika/pasek_tlo2.gif)" || DOM.backgroundImage == '' ) {
DOM.backgroundImage = 'none';
DOM.backgroundColor = 'rgb(234, 137, 50)';
} else {
DOM.backgroundImage = "url(grafika/pasek_tlo2.gif)";
}
}[/PHP]

d.i.z. napisał(a):

Wiesz, może i bym spróbował coś pomóc ale na pewno nie będę się babrał w tej javascriptowej papce którą masz na stronie wink
Jak byś przygotował jakiś mały testcase to na pewno ktoś by się znalazł do pomocy.

A tak ogólnie to nie jestem pewien czy istnieje coś takiego jak:
style.borderXxx = 'none';
Ja kiedyś pisałem style.borderXxx = '0 solid white' na przykład. Może nie jest to konieczne ale działa wink

DEXTERtm napisał(a):

Nie mówimy tu o "papce" bo to może być osobny temat. Nie zastanawiajcie się też czy istnieje coś takiego jak border-xxx, bo w postaci CSS Opera to obsługuje, tylko nie oferuje do tego dostępu z poziomu JavaScript'u. Podkreślam, że jako jedyna z pośród wszystkich przeglądarek liczących się na rynku. Poza tym moja strona jest 100% zgodna z XHTML 1.1 i CSS 2.0

A skrypt zmieniający tło :?:

d.i.z. napisał(a):

Originally posted by DEXTERtm
Nie mówimy tu o "papce" bo to może być osobny temat. Nie zastanawiajcie się też czy istnieje coś takiego jak border-xxx, bo w postaci CSS Opera to obsługuje, tylko nie oferuje do tego dostępu z poziomu JavaScript'u.


Oferuje, ale nie widzi tam nic dopóki nie wpiszesz tam czegoś z poziomu javascriptu. Czyli nie zobaczysz tam wartości wpisanych np. z zewnętrzych arkuszy styli. Nie wiem czy tak nie powinno być też w gecko.
Jeżeli jednak checsz zobaczyć co tam faktycznie jest to zainteresuj się czymś takim jak getComputedStyle i getPropertyValue .

Poza tym moja strona jest 100% zgodna z XHTML 1.1 i CSS 2.0


To niewiele znaczy kiedy większa część strona zbudowana jest w javascripcie.

A skrypt zmieniający tło :?:


Tak na pierwszy rzut oka to widzę dwa błędy:
1. nie używasz getPropertyValue także nie zobaczysz tam na początku żadnych wartości (to o czym piszę wyżej).
2. porównujesz string url(grafika/...) z czymś a nie przewidziałeś, że przeglądarka może tam widziec absolutną ścieżkę (czyli url(http://www.../grafika...) ). Nie mówiąc już o np. dodaniu średników co też akurat robi Opera. Ja tu bym musowo widział wykorzystanie wyrażeń regularnych jeżeli już ma to być w ten sposób zrobione.

DEXTERtm napisał(a):

1) Zanim zoptymalizowałem kod w JavaScript'cie strona była testowana i jest 100% zgodna z XHTML 1.1

2) getComputedStyle i getPropertyValue - co to do licha jest? W życiu się z tym nie spotkałem.

3) "a nie przewidziałeś, że przeglądarka może tam widzieć absolutną ścieżkę" - a nie przewidziałeś że Opera może mieć absolutną ścieżkę chciałeś napisać, bo tylko z nią jest problem.
Co to w ogóle być? JavaScript operuje na arkuszy styli, a nie na tym co sobie ubzdura przeglądarka!

4) Co do border-xxx to w ogóle nie rozumiem tego tłumaczenia.

d.i.z. napisał(a):

1) Zanim zoptymalizowałem kod w JavaScript'cie strona była testowana i jest 100% zgodna z XHTML 1.1


No i co z tego? Kto sprawdził ten javascript i stwierdził, że jest w 100% poprawny? Walidator tego nie robi. I nie chodzi mi o poprawność składniową tylko funkcjonalną. Tego nawet człowiek nie jest w stanie w 100% stwierdzić.

2) getComputedStyle i getPropertyValue - co to do licha jest? W życiu się z tym nie spotkałem.


spytaj googla.

3) a nie przewidziałeś że Opera może mieć absolutną ścieżkę chciałeś napisać, bo tylko z nią jest problem.
Co to w ogóle być? JavaScript operuje na arkuszy styli, a nie na tym co sobie ubzdura przeglądarka!


A jak sprawdzasz z poziomu javascriptu atrybut href jakiegoś odnośnika to też ci pokazuje to co tam wpisałeś (np. href="obrazki/1.jpg") czy pełny adres? Niedobra przeglądarka.

adas napisał(a):

A nie byłoby prościej jakimś :hover to zrobić? A jeżeli IE by tego nie rozumiało to http://www.xs4all.nl/~peterned/csshover.html
Hmm?

el_shize napisał(a):

weź zrób przez id:
document.getElementById("identyfikator").style.borderRight = 'none';
i problem z głowy.
u mnie na opera 8.01 dziala. na innych nie sprawdzałem...
dzięki.
// tylko pamiętaj o dodaniu w <> id="identyfikator"

DEXTERtm napisał(a):

No właśnie hover w IE nie działało, dzięki.

Od kiedy atrybuty tagów HTML należą do arkusza CSS :?:

Mam w domu leksykon wszystkich metod i obiektów dla przeglądarek do IE5.5 i do NN6, nie ma tam nic o getComputedStyle i getPropertyValue. Mam się uczyć i pisać skrypty specjalnie dla Opery :?:

Link który Wam dałem prowadzi do specjalnej wersji. Chciałem się kiedyś popisać - strona ładuje się 2,5 sekundy na modemie - zastosowanie JavaScript'u dało mi 1s. W domu mam normalną wersję, 100% zgodną z XHTML1.1 i na niej pracuję.