Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Declarație primar

Contestare amenda politia locala

PC se restarteaza cu erori ecran ...

Mercedes atego 815 oprire motor
 Ce contine Creion rani dupa ras?

Filtru sedimente inainte de pompa?

Paște fericit!

electrician constructor video curs
 Cum pot bloca transferul de date ...

Ce reprezinta in chimie abrevieri...

Google pay ma taxeaza in timp ce ...

Kia Picanto 2022 - Problema motor?
 Durere umar AC Joint

Care este cea mai sanatoasa paine?

Zgomot ritmic ce urmeaza rotirea ...

Merita Lumix FZ82 in 2024?
 

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

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

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