2009-06-29 3 views
6

Ich bin dabei, meine Webanwendung zu debuggen und habe eine Wand getroffen. Ich habe nur ein Verhalten in Google Chrome und meine Javascript-Unfähigkeit hält mich von der Lösung ab.Click Ereignis wird in IE/Firefox ausgelöst, aber Chrome löscht die Ereigniszuweisung

Ich habe eine ASP-Seite mit einem <asp:Panel> Steuerelement. Innerhalb des Panels habe ich ein einfaches Suchfeld eingerichtet und verwende <asp:LinkButton>, um die Suche zu starten. Der Benutzer gibt seinen Suchtext ein und sollte Enter drücken können (für usability sake) und die Suchergebnisse werden angezeigt. Dies funktioniert in IE, aber nicht in FireFox. Es gibt eine documented fix die ich auf meine Seite angewendet habe und FireFox erfolgreich zum Funktionieren gebracht habe. Golden.

Außer, die Fehlerbehebung funktioniert nicht in Google Chrome! Ein bisschen fischig, feuere ich Firebug an, um den Code zu debuggen ... oh, warte ... es ist ein Chrome-Problem. OK, gut, ich kann Debugging-Javascript ohne Firebug (sob) - Ich feuere den Chrome-Debugger und Schritt durch den Code. Es stellt sich heraus, dass das zuvor erwähnte JavaScript-Update von Chrome gelöscht wird.

Das Update Skript wird auf Seite laden und modifiziert die Click-Handler des 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'); 
} 

Und wenn die Seite im Debugger Chrom ausgeführt trete ich in function WebForm_FireDefaultButton() und lernen Sie die Zeile:

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

und aus irgendeinem Grund wurde defaultButton.click"undefined" geworden. Ich bin ratlos ... Was vermisse ich?

Außerdem verwende ich nicht jQuery und es ist keine praktikable Lösung.


Die HTML erzeugt:

<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

Ich bin nicht viel von einem ASP-Typ, können Sie den HTML-Code von dem, was das Panel produziert? –

+0

Ich habe ein ähnliches Problem, wo in Chrome, kann ich Zugriff auf ein HTMLAnchorElement (ein Tag), aber es hat keine click() -Funktion, obwohl es sollte. –

Antwort