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
ASP.NET 2.0 / 3.5 / 4.0
Chiamate Ajax senza UpdatePanel non funzionano con Firefox, perchè?!?!...
lunedì 09 giugno 2008 - 10.43
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 9 giu 2008 - 10:43
Ho una pagina aspx in cui le chiamate Ajax sono gestite manualmente senza ricorrere all'updatepanel.
La pagina è implementata nel seguente modo:
<%@ Page Language="VB" MasterPageFile="~/masterpages/DueColonne.master" AutoEventWireup="false" CodeFile="CatalogoArticoli.aspx.vb" Inherits="CatalogoArticoli" title="Catalogo Articoli" EnableEventValidation="false" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderSx" Runat="Server" Visible="true">
<script type="text/javascript" src="../js/components/Catalogo.js" ></script>
<div id="selezione-catalogo" >
<div id="buttonselezione">
<asp:Button ID="btnApriCat" runat="server" Text="Mostra" onmouseover="this.className='btTipo3_Over'" onmouseout="this.className='btTipo3'" CssClass="btTipo3" />
<asp:Button ID="btnAzzera" runat="server" Text="Azzera" onmouseover="this.className='btTipo3_Over'" onmouseout="this.className='btTipo3'" CssClass="btTipo3" />
</div>
</div>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderDx" Runat="Server">
<div id="div-catalogo">
<asp:Label ID="lblErrore" runat="server" Visible="false" CssClass="lblErrore" />
<asp:Label ID="lblDescrizione" runat="server" />
</div>
<div style="height: 50px;">
<div style="position: relative; float: right; clear: left;">
<asp:Label ID="lblElementi" runat="server" CssClass="labelPag" />
</div>
<div id="indici" runat="server" class="divPag" ></div>
</div>
<br />
<asp:Label ID="Vuoto" CssClass="Vuoto" runat="server" Visible="false" />
<script type="text/javascript">
function injectComboSelBehaviors() {
var objCatalogo = new CatOrdiniWeb('ctl00$ContentPlaceHolderSx$btnApriCat', 'div-catalogo');
}
Sys.Net.WebRequestManager.add_invokingRequest(onInvoke);
Sys.Net.WebRequestManager.add_completedRequest(onComplete);
function onInvoke(sender, args)
{
InizioAttesa();
}
function onComplete(sender, args)
{
FineAttesa();
}
function pageUnload()
{
Sys.Net.WebRequestManager.remove_invokingRequest(onInvoke);
Sys.Net.WebRequestManager.remove_completedRequest(onComplete);
}
</script>
</asp:Content>
Quando si clicca sul bottone btnApriCat la pagina dovrebbe caricare in modalità Ajax dei contenuti all'interno del div "div-catalogo".
Quello che non riesco a capire è come mai questa soluzione funziona correttamente su Internet Explorer mentre su Firefox no.
Forse c'è qualche dettaglio implementativo che non viene riconosciuto da firefox...non so. Qualche suggerimento?
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
lun 9 giu 2008 - 10:50
Non ho capito come intercetti lato js l'onclick del pulsante, tramite un $addHandler?
Il problema potrebbe essere la differente propagazione degli eventi fra IE e FF. Se c'è una lista di funzioni che devono rispondere all'evento "click" del pulsante IE affronta la lista in un ordine e FF nel verso opposto.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 9 giu 2008 - 11:46
praticamente ho questa definizione:
CatOrdiniWeb = function ( btnVisualizzaId, divCatalogoId){
this.btnVis = $get(btnVisualizzaId);
this.initializeBehavior();
}
e poi ho
CatOrdiniWeb.prototype = {
initializeBehavior: function() {
(this.btnVis != null) ? (this.btnVis.onclick = function(){.......}) : (this.btnVis=null) ;
}
}
è corretta questa struttura?
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
lun 9 giu 2008 - 12:02
Non sono espetto di behaviour ma sembra essere tutto ok.
this.btnVis.onclick = function(){.......}
Potresti estrarre dai puntolini il momento della postback?
credo inoltre che tu possa aggiungere 2 parametri a function(){...} che dovrebbero essere (event, args).
Una delle possibili soluzioni, ammesso che le mie supposizioni siano giuste sul modo con cui fai la postback:
event.preventDefault();
event.stopPropagation();
Questo ferma la propagazione dell'evento a gli altri handler e al "default" del browser.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 9 giu 2008 - 12:23
Facendo alcune ricerche ho trovato questo post:
http://forums.whirlpool.net.au/forum-replies-archive.cfm/573157.html
pensi possa essere questo il problema?
ora però devo capire come gestire l'event.
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
lun 9 giu 2008 - 12:51
Per la gestione degli eventi ajax.net ti mette a disposizione degli strumenti comodissimi. Qui trovi un esempio su come gestiere il click di un pulsante:
http://msdn.microsoft.com/en-us/library/bb311019.aspx.
L'esempio mi sembra calzante. Se hai problemi nell'usarlo chiedi pure.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 9 giu 2008 - 13:56
Ora provo...grazie
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
lun 9 giu 2008 - 14:42
Avevo fatto copia incolla dal browser:
http://msdn.microsoft.com/en-us/library/bb311019.aspx
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
lun 9 giu 2008 - 17:08
Sto facendo delle prove ma ancora niente...
sembra che firefox non riconosca la variabile this.btnVis assegnata in precedenza
infatti sull'istruzione this.btnVis.onclick = function(){.......} firebug mi segnala questo errore: this.btnVis has no properties
nessuna idea?
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
lun 9 giu 2008 - 18:00
Difficile da dire se non mi dai la parte di valorizzazione di this.attributo. Attento soprattuto che 'this' sia quello che ti aspetti.
Tips per referenziare un bottone di id consciuto puoi sempre fare $get('iddelControllo') o il buon vecchio document.getElementById('iddelControllo').
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mar 10 giu 2008 - 10:36
prima di tutto ti ringrazio per il supporto...purtroppo ancora non sono riuscito ad identificare il problema.
sto facendo mille prove dalla console di firebug ma ancora niente...la cosa strana è che firefox sembra che non riconosca i bottoni.
Ho tolto tutto il codice javascript ed ho inserito queste semplicissime istruzioni:
<script type="text/javascript">
var button=$get('ctl00$ContentPlaceHolderSx$btnApriCat');
var name = button.value;
alert(name);
</script>
ma firebug mi restituisce: button has no properties - var name = button.value;
bo continuo a provare...la faccenda cmq è proprio strana.
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mar 10 giu 2008 - 10:51
Aspè: usi c'è il $ nel nome!
Forse ci sono: Non stai usando l'id del controllo, ma il name (infatti il name usa come separatore il $ e l'ID il _).
Funziona con explorer e non con FF: document.getElementById (di cui $get è un semplice alias) ha un comportamento diverso nei due browser. FF se non trova nessun controllo con id indicato restituisce null (o undefined non ricordo). IE se non trova nessun controllo con id indicato cerca per Name e restiuisce il primo elemento trovato.
Se hai bisogno di sapere l'id del controllo renderizzato dato che sei in un controllo iterativo tipo repeater o altri è (lato server Controllo.ClientId).
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mar 10 giu 2008 - 10:59
Non ci crederai ma ho notato questa cosa proprio poco fa!
infatti è bastato mettere ctl00_ContentPlaceHolderSx_btnApriCat e tutta sembra funzionare a meraviglia...grazie lo stesso per la risposta, se non ci fossi arrivato da solo avrei risolto il problema grazie a te.
Ciao e grazie.
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mar 10 giu 2008 - 11:03
>Non ci crederai ma ho notato questa cosa proprio poco fa!
Meglio!
>
>infatti è bastato mettere ctl00_ContentPlaceHolderSx_btnApriCat
>e tutta sembra funzionare a meraviglia...grazie lo stesso per
>la risposta, se non ci fossi arrivato da solo avrei risolto il
>problema grazie a te.
Fesso io, me ne sarei dovuto accorgere già al primo messaggio che quello che usavi non era l'id: solo che essendo a lavoro laggo sempre molto di fretta
Comunque se hai risolto ricordati di chiudere il thread.
>
>Ciao e grazie.
prego, ciao
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mar 10 giu 2008 - 11:21
perdona l'ignoranza ma per chiudere il thread basta accettare la risposta?
Wamba
Profilo
| Expert
722
messaggi | Data Invio:
mar 10 giu 2008 - 11:24
Si, serve per chi avrà il tuo stesso problema in futuro. Effettua una ricerca e vede che il thread ha una risposta risparmiando tempo ed evitando di riporre la domanda: in teoria
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
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 !