Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
HTML, Javascript, CSS, DHTML, XHTML
Problema explorer 8 con javascript innerhtml/ajax
venerdì 22 ottobre 2010 - 16.59
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows 7
|
MySQL 5.1
|
Access (.mdb)
|
Office XP
|
Internet explorer 8.0
|
Firefox
|
Javascript
mo70
Profilo
| Junior Member
54
messaggi | Data Invio:
ven 22 ott 2010 - 16:59
Ciao a tutti,
IE8 mi sta facendo impazzire!!! Ho creato una select le cui options vengono inserite dinamicamente con innerhtml attraverso una chiamata ajax. La select viene riempita correttamente sia con firefox che con ie 8 (con un piccolo trucco che ho trovato in rete), però, quando chiedo il n. delle opzioni presenti nella select con firefox ho la risposta corretta, mentre con ie il n. risulta zero. La cosa strana è che tutte le opzioni vengono correttamente visualizzate ma l'innerHTML della select in IE 8 è vuoto. Sapete indicarmi se c'è una soluzione? Vi posto il codice. Grazie mille...
function crea_ordinamento(opzioni_sel)
{
var my_url="archivio_report.php";//pagina origine dati chiamata con ajax
var sel_dest=document.getElementById("ordinamento");
var sel_testata=document.getElementById("crit_testata");
var sel_report=document.getElementById('report');
var index_report=sel_report.selectedIndex;
var message_opzioni_sel;
var descr_report = sel_report.options[sel_report.selectedIndex].text;//ricava il nome del report salvato nel db (tabella t_tip_report)
var lungh_ordinamento;
//verifica se il parametor opzioni_sel è stato passato oppure no e, di conseguenza, crea la stringa da accodare
//alla variabile message
if (opzioni_sel!='undefined')
{
message_opzioni_sel="&selezione="+opzioni_sel;
}else{
message_opzioni_sel='';
}
var message="pagina_web="+document.getElementById('report').options[index_report].value+message_opzioni_sel+"&descrizione_report="+descr_report;
//richiesta ajax
if (window.XMLHttpRequest)
{
request=new XMLHttpRequest();
}else{
request=new ActiveXObject("Microsoft.XMLHTTP");
}
if (request)
{
request.open("POST",my_url);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.onreadystatechange=
function()
{
if (request.readyState == 4)
{
//codice innerhtml cross browser
if(document.all) //IE
{
//Aggiunge una opzione fittizia
var opts = "<option>opzione</option>" + request.responseText;
//Riempie select box
sel_dest.innerHTML=opts;
//Forza refresh della select box in IE
sel_dest.outerHTML = sel_dest.outerHTML;
alert(request.responseText);
}else{ //browser normali
//Risposta Ajax senza aggiunte
sel_dest.innerHTML=request.responseText;
//alert(request.responseText);
}
lungh_ordinamento=sel_dest.length;//determina quante opzioni contiene la select ordinamento
alert(sel_dest.length);
}
}
request.send(message);
}else{
alert("Il tuo browser non è abilitato per l'utilizzo di ajax");
}
}
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 11 nov 2010 - 01:54
>
Ciao a tutti,
ciao
>IE8 mi sta facendo impazzire!!! Ho creato una select le cui options
>vengono inserite dinamicamente con innerhtml attraverso una chiamata
>ajax. La select viene riempita correttamente sia con firefox
>che con ie 8 (con un piccolo trucco che ho trovato in rete),
>però, quando chiedo il n. delle opzioni presenti nella select
>con firefox ho la risposta corretta, mentre con ie il n. risulta
>zero. La cosa strana è che tutte le opzioni vengono correttamente
>visualizzate ma l'innerHTML della select in IE 8 è vuoto. Sapete
>indicarmi se c'è una soluzione? Vi posto il codice. Grazie mille...
Purtroppo in js diretto non so aiutarti perchè conosco poco ie8, però potresti pensare di servirti di un framework javacript, come ad esempio jquery che almeno ti garantisce la scrittura di una sola versione di codice per tutti i tipi di browser. In tal caso, la gestione dell'innerHTML è demandata al framework e tu non ti devi preoccupare di considerare il contesto browser.
Maggiori info qui:
http://jquery.com/
per come si usa la innerHTML:
http://api.jquery.com/html/
Aggiungendo una semplice riga di inclusione, potrai gestire anche solo la parte interessata rifattorizzando solo poche righe di codice.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !