Kliknij zdarzenia pożaru w IE / Firefox, ale Chrome rezygnuje z przydzielania zdarzeń
Jestem w trakcie debugowania mojej aplikacji internetowej i trafiłem na ścianę. Doświadczam zachowania tylko w Google Chrome, a moja nieudolność javascript powstrzymuje mnie od rozwiązania.
Mam stronę ASP z<asp:Panel>
kontrola. W panelu ustawiłem proste pole tekstowe wyszukiwania i używam<asp:LinkButton>
aby uruchomić wyszukiwanie. Użytkownik wprowadza swój tekst wyszukiwania i powinien mieć możliwość naciśnięcia klawisza Enter (dlasake użyteczności) i zostaną wyświetlone wyniki wyszukiwania. Działa to w IE, ale nie w FireFox. Tam jestudokumentowana poprawka które zastosowałem na mojej stronie i udało mi się uruchomić FireFox. Złoty.
Poza tym poprawka nie działa w Google Chrome! Trochę podejrzany, odpalam Firebuga, żeby debugował kod ... och, czekaj ... to tylko problem z Chrome. OK, w porządku Mogę obsługiwać debugowanie javascript bez Firebug (szloch) - Odpalam debuger Chrome i przechodzę przez kod. Okazuje się, że wspomniana wcześniej poprawka javascript jest usuwana przez Chrome.
Skrypt naprawy działa na stronie ładowania i modyfikuje procedurę obsługi kliknięć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');
}
I podczas uruchamiania strony w debuggerze chrome wkraczamfunction WebForm_FireDefaultButton()
i przejdź do linii:
if (defaultButton && typeof(defaultButton.click) != "undefined") { ... }
iz jakiegoś powodudefaultButton.click
stał się"undefined"
. Jestem zakłopotany ... Czego mi brakuje?
Ponadto nie używam jQuery i nie jest to realne rozwiązanie.
Powstały kod HTML:<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>