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>
Nie jestem facetem ASP, czy możesz zamieścić HTML tego, co produkuje panel? –
Mam podobny problem, ponieważ w Chrome mogę uzyskać dostęp do tagu HTMLAnchorElement (tag ), ale nie ma on funkcji click(), nawet jeśli powinien. –