Cine e la curent cu toate update-urile M$/IE a observat recent cum, pe o multime de siteuri, controalele de tip Flash/Quicktime/etc. au inceput sa ceara un click de pomana si sa se impodobeasca cu un border infect la roll-over. Pana sa ma documentez, am luat asta ca pe o buba a batranului meu calculator. Dar (de data asta) problema e chiar in curtea lui Bill Gates… Noroc ca exista o solutie (ca intotdeauna) la orice problema.Ce se intampla: cei de la Microsoft au pierdut recent un proces destul de incomod care i-a fortat sa reformuleze complet modul in care IE se ocupa de interpretarea tag-urilor <object> si <embed> din paginile web. In urma procesului, M$ a scos pe taraba un update pentru IE care, odata instalat, blocheaza functionarea oricarui Flash, Quicktime, Realplayer, Java, Acrobat Reader etc. inserat in pagina prin oricare din cele 2 tag-uri de mai sus, invitand userul sa apese pe respectivele controale daca vrea sa le activeze.
Cum se traduce treaba asta in real-life: orice control embedat direct (prin HTML) in pagina va capata, la roll-over, acel border infect despre care scriam in introducerea articolului, si un tool-tip care zice “Click to activate and use this control.” Odata facut clickul respectiv, controlul se activeaza si treaba merge in continuare in mod normal. Pentru userul normal, asta poate fi un inconvenient minor, dar pentru developerul web asta inseamna ca TOATE SITE-urile care contin Flash sau embeduri sau objects vor trebui luate la mana, si reparate sistematic – altfel, toti vechii clienti vor sari in sus in curand, cu replici de genul “s-a stricat site-ul, reparati-l va rog!” – si poate ca pe buna dreptate.
Au aparut deja diverse solutii pe piata, pentru rezolvarea problemei, gen “re-invatati sa scrieti un embed, facand-o din JS” (vezi faimosul SWFObject), dar care presupun o bataie de cap nejustificata decat poate de caruta de features pe care le aduc cu ele.
Pentru cei care cauta un fix rapid, EXCLUSIV pentru IE (IE este singurul browser imbolnavit din cauza asta) si EXCLUSIV pentru problema asta, am gasit o rezolvare suficient de fina si de usor de implementat incat sa ma hazardez sa v-o dau si voua mai departe:
1. Creati pe server un fisier de tip text, numiti-l cum vrei voi (sa-i zicem ieupdate.js)
2. Deschideti-l si copiati in el urmatoarele linii de cod:
theObjects = document.getElementsByTagName("object");
for (var i = 0; i < theObjects.length; i++) {
theObjects[i].outerHTML = theObjects[i].outerHTML;
}
3. Salvati fisierul
4. Chiar inainte de inchiderea tag-ului </body> inserati legatura catre fisierul nou creat (evident, punctul 4 trebuie repetat pentru TOATE paginile pe care vreti sa le “vindecati”).
<script type="text/javascript" src="ieupdate.js">
[ Solutie preluata de la AmaraSoftware ]
Firefox Rules. Din toata traba asta, browserele concurente au numai de castigat. Daca stam bine sa ne gandim MS “sutit” o gramada de chestii fie de la altii, fie din comunitatea open source. De exemplu acu in IE7 reinventeaza roata cu browsing-ul pe taburi prezent de ani de zile in Opera si Mozilla. Poate nu e departe veremea cand o sa apasam pe un buton in plus daca vrem sa folosim tab-uri in IE.(Pentru cei care inca mai foloses browserul asta infect la propriu si la figurat)
si in Opera e aceeasi problema ca in IE
ai uitat sa pui ghilimelele (http://www.amarasoftware.com/flash-problem.htm)