2009-06-29 9 views
6

Jestem w trakcie debugowania aplikacji internetowej i uderzyłem w ścianę. Mam tylko zachowanie w Google Chrome i moja nieudolność javascript powstrzymuje mnie od rozwiązania.Kliknij zdarzenia pożaru w IE/Firefox, ale Chrome zrzuca przypisanie zdarzenia

Mam stronę ASP z kontrolką <asp:Panel>. W panelu ustawiłem prosty pole tekstowe wyszukiwania i używam <asp:LinkButton> do rozpoczęcia wyszukiwania. Użytkownik wprowadza swój tekst wyszukiwania i powinien być w stanie nacisnąć enter (dla usability sake), a wyniki wyszukiwania zostaną wyświetlone. Działa to w IE, ale nie w FireFox. Istnieje documented fix, który zastosowałem na mojej stronie i pomyślnie dostałem funkcję FireFox. Złoty.

Poza tym poprawka nie działa w Google Chrome! Trochę podejrzany, odpalam Firebuga, żeby debugować kod ... och ... czekaj ... to tylko kwestia Chrome. OK, dobrze, mogę poradzić sobie z debugowaniem javascript bez Firebug (szloch) - odpalam debugger Chrome i przechodzę przez kod. Okazuje się, że wspomniana wcześniej poprawka javascript jest odrzucana przez Chrome.

Skrypt fix biegnie na stronie obciążenia i modyfikuje obsługi kliknięciem 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'); 
} 

A gdy uruchomiony strony w Chrome debugera I wkroczyć function WebForm_FireDefaultButton() i dostać się do linii:

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

i z jakiegoś powodu defaultButton.click stała się "undefined". Jestem zaskoczony ... Czego mi brakuje?

Ponadto nie używam jQuery i nie jest to realistyczne rozwiązanie.


HTML produkowane:

<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

Nie jestem facetem ASP, czy możesz zamieścić HTML tego, co produkuje panel? –

+0

Mam podobny problem, ponieważ w Chrome mogę uzyskać dostęp do tagu HTMLAnchorElement (tag ), ale nie ma on funkcji click(), nawet jeśli powinien. –

Odpowiedz

Powiązane problemy