2009-06-29 14 views
6

Estoy en el proceso de depurar mi aplicación web y me he topado con una pared. Estoy experimentando un comportamiento en Google Chrome solamente y mi ineptitud de JavaScript me impide la solución.Haga clic en incendios de eventos en IE/Firefox, pero Chrome está abandonando la asignación de eventos

Tengo una página ASP con un control <asp:Panel>. Dentro del panel, he configurado un cuadro de texto de búsqueda simple y estoy usando un <asp:LinkButton> para iniciar la búsqueda. El usuario ingresa su texto de búsqueda y debe poder presionar enter (para usability sake) y se mostrarán los resultados de la búsqueda. Esto funciona en IE, pero no en Firefox. Hay un documented fix que he aplicado a mi página y he logrado que funcione Firefox. Dorado.

Excepto que la solución no funciona en Google Chrome. Un poco sospechoso, enciendo Firebug para depurar el código ... oh, espera ... es solo un problema de Chrome. OK, bien, puedo manejar la depuración de javascript sin Firebug (sollozo) - Arranco el depurador de Chrome y paso por el código. Resulta que la corrección javascript, mencionada anteriormente, está siendo descartada por Chrome.

El guión solución se ejecuta al cargar la página y modifica el controlador de 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'); 
} 

Y cuando se ejecuta la página en el depurador de cromo entro en function WebForm_FireDefaultButton() y llegar a la línea:

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

y por alguna razón defaultButton.click se ha convertido en "undefined". Estoy perplejo ... ¿Qué me estoy perdiendo?

Además, no estoy usando jQuery y no es una solución viable.


El HTML producido:

<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> 
+0

No soy un tipo de ASP, ¿puedes publicar el HTML de lo que produce el panel? –

+0

Tengo un problema similar, donde en Chrome, puedo obtener acceso a un HTMLAnchorElement (una etiqueta ) pero no tiene una función de clic(), aunque debería. –

Respuesta

Cuestiones relacionadas