Fare clic sugli events di avvio in IE / Firefox, ma Chrome cede l'assegnazione degli events

Sto procedendo nel debug della mia applicazione web e ho colpito un muro. Sto riscontrando un comportmento solo in Google Chrome e la mia ineptitude di javascript mi ​​sta tenendo dalla soluzione.

Ho una pagina ASP con un controllo <asp:Panel> . All'interno del pannello, ho impostato una semplice casella di ricerca e sto utilizzando un <asp:LinkButton> per avviare la ricerca. L'utente inserisce il text di ricerca e dovrebbe essere in grado di colpire enter (per motivi di usabilità ) ei risultati della ricerca verranno visualizzati. Questo funziona in IE, ma non in FireFox. C'è una correzione documentata che ho applicato alla mia pagina e sono riuscito a far funzionare FireFox. D'oro.

Ad exception, la correzione non funziona in Google Chrome! Un po 'pescoso, spendo Firebug per eseguire il debug del codice … oh aspetta … è un problema solo di Chrome. OK, bene posso gestire il debug di javascript senza Firebug ( sob ) – sparo il debugger di Chrome e passo attraverso il codice. Risulta che la correzione javascript, precedentemente menzionata, viene eliminata da Chrome.

Lo script di correzione viene eseguito sul carico di pagina e modifica il gestore di clic del LinkButton :

 var defaultButton = document.getElementById('<%= lnkSearch.ClientID %>'); if (defaultButton && typeof(defaultButton.click) == 'undefined') { defaultButton.click = function() { alert('function fired'); var result = true; if (defaultButton.click) result = defaultButton.onclick(); if (typeof(result) == 'undefined' || result) { eval(defaultButton.getAttribute('href')); } }; alert(typeof(defaultButton.click) != 'undefined'); } 

E quando si esegue la pagina nel debugger cromato, passo nella function WebForm_FireDefaultButton() e arrivo alla row:

 if (defaultButton && typeof(defaultButton.click) != "undefined") { ... } 

e per qualche ragione defaultButton.click è diventato "undefined" . Sono stumped … Che cosa mi manca?

Inoltre, non sto utilizzando jQuery e non è una soluzione valida.


L'HTML prodotto:

 <div id="abc_pnlSearchPanel" language="javascript" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'abc_lnkSearch')"> <div class="searchPanel"> <span class="searchText"> Type in stuff to search: </span> <span style="float: left;"> <input name="abc:txtSearch" type="text" id="abc_txtSearch" style="width:312px;" /> </span> <a onclick="this.blur();" id="abc_lnkSearch" class="ButtonLayout" href="javascript:__doPostBack('abc$lnkSearch','')"><span>Search</span></a> <div style="clear: both"></div> </div> </div> 

Non sono stato in grado di determinare perché questo accadesse in Chrome e nessuno degli altri browser. Ma registrare lo script per eseguire su PageLoad ha risolto il problema.

 <body onLoad="DefaultButtonFix()">