Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Procedura accident fara pagube ma...

"Asta este un razboi intre am...

Cum se regleaza aceste balamale?

Renovare ap interbelic, Centru - ...
 Chit rosturi gips carton

Gasesc echipa de proiectare pentr...

Demisie la fostul job - mutare in...

Probleme rețea
 A folosit cineva sistemul din foto?

Comodatarul poate fi si persoana ...

Durere antebrat, cred

Tehnologia Blockchain NU are viit...
 Phishing - mailuri aparent de la ...

Recomandare reparare/inlocuire ca...

Apartament in bloc nou, sfat fonic

Scadere presiune centrala din cau...
 

Internet explorer CSS - hover

- - - - -
  • Please log in to reply
4 replies to this topic

#1
VladB1989

VladB1989

    Junior Member

  • Grup: Members
  • Posts: 78
  • Înscris: 06.02.2007
dupa cum bine stiti, Internet Explorer 6 nu are suport pentru :hover. asa ca am gasit un fix, si merge foarte bine:

li {
			h: expression(onmouseover=new Function("this.style.backgroundColor='#faf1c3'; this.style.color='#000';this.style.fontWeight='bold';"),
				onmouseout=new Function("this.style.backgroundColor='#fff'; this.style.color='#fff';this.style.fontWeight='100';"));
				}

problema apare cand vreau sa schimb bordura unei imagini cand mouse-ul este pe td-ul care o contine. nu vreau sa folosesc id-uri pentru ca e o lista lunga de td-uri, asa ca am incercat ceva mai general, dar nu am reusit. este posibil macar?

eu am incercat asa:

	   td {
	   		var timg = document.getElemenyById("first_table"); /* first_table este id-ul tabelului care contine celulele cu imagini */
	   		var tdimage = timg.this.getElementsByTagName("img"); /* am extras vectorul cu toate imaginile din casuta pe care este mouse-ul */
			var firstimg = tdimage[0];  /* am luat prima valoare(considerand ca prima este singura continuta de td), apoi incep schimbatul bordurii */
			h: expression(onmouseover=new Function("firstimg.style.borderColor='#faf1c3';"));
				}

eroarea in internet explorer este

                            'firstimg' is undefined

deci problema este la acel vector. doar ca nu stiu ce. multumesc in avans pt ajutor

#2
Jumping Jack

Jumping Jack

    Member

  • Grup: Members
  • Posts: 622
  • Înscris: 12.09.2007

View PostVladB1989, on Dec 22 2008, 10:14, said:

dupa cum bine stiti, Internet Explorer 6 nu are suport pentru :hover. asa ca am gasit un fix, si merge foarte bine:

...
Nu stiu de ce te chinui sa gasesti solutii la probleme pe cale de disparitie... ie6 o sa se duca naibii in maxim un an. Si exista un camion de solutii consacrate pentru a-l face sa conlucreze.

Una ar fi asta:
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("navi");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
  }
  node.onmouseout=function() {
  this.className=this.className.replace(" over", "");
   }
   }
  }
 }
}
window.onload=startList;

In principiu, la onmouseover  scriptul asta va da o clasa numita .over (dar poti s-o numesti cum vrei), oricarui element din #navi. Si nu ai decat sa desfinesti in css ce sa faca clasa .over. La onmouseut clasa .over este anulata.
ATENTIE: scriptul de mai sus functioneaza intr-o lista (ul#navi). nu in tabel, nu in div nu in altceva. Daca vrei sa functioneze in altceva, trebuie sa o ajustezi tu.

Dezavantajul este ca trebuie sa scrii css suplimentar, lucreaza numai la id-urile predefinite (#navi in cazul de mai sus), si in cazul in care ai definite mai multe eventuri onload, nu vor functiona decat ultimul.
Dar pentru asta exista remediul asta - se numeste "multiple onload event handler" si a fost inventat de Simon Willison

Aici este codul pentru functia AddLoadEvent:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}

addLoadEvent(startList);
// daca mai ai nevoie de alte onload-uri, le adaugi aici: 
//addLoadEvent (eventul tau);
//addLoadEvent (si inca un event);
//addLoadEvent (si inca unul);


Alta solutie ar fi sa te folosesti de solutia lui dean edwards, care este ceva mai generala, in sensul ca pe linga problema :hover mai rezolva si :first-child, :last-child, :focus, etc. Incarci scriptul si ai terminat problema. ie6 se va comporta (aproape) ca ie7.
Aici gasesti scriptul respectiv

Mai exista si solutia cu hover.htc, care mie personal nu imi place. Eu nu folosesc acum decat exclusiv solutia dean edwards, pentru ca e de tip "fire and forget", si din cauza asta e foarte comoda.

Edited by Jumping Jack, 23 December 2008 - 20:16.


#3
VladB1989

VladB1989

    Junior Member

  • Grup: Members
  • Posts: 78
  • Înscris: 06.02.2007
Multumesc foarte mult pentru raspunsul detaliat. atata timp cat ie6 inca mai este pe piata, clientii doresc functionalitate deplina si in acest browser, de-aia cautam. gasisem si eu ceva legat de hover.htc, dar nu m-a incantat nici pe mine. cred ca o sa folosesc metoda lui dean edwards, deoarece am multe celule intr-o pagina carora vreau sa le schimb backgroundul la hover.

#4
Jumping Jack

Jumping Jack

    Member

  • Grup: Members
  • Posts: 622
  • Înscris: 12.09.2007

View PostVladB1989, on Dec 23 2008, 22:56, said:

Multumesc foarte mult pentru raspunsul detaliat. atata timp cat ie6 inca mai este pe piata, clientii doresc functionalitate deplina si in acest browser, de-aia cautam.
Cu placere.
N-am spus sa nu tii cont de ie6. Ziceam doar ca nu e nevoie sa cauti solutii in plus la problema. Dupa cum ai vazut, problema este rezolvata de altii, e testata si nu trebuie decat sa o aplici. Bafta!

#5
ClaudiuCC

ClaudiuCC

    Member

  • Grup: Members
  • Posts: 980
  • Înscris: 13.09.2007
statistici browsere... vezi daca are rost sa-ti bati capul cu IE6

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate