2009-06-29 38 views
6

Tôi đang trong quá trình gỡ lỗi ứng dụng web của mình và đã đâm vào tường. Tôi chỉ gặp phải một hành vi trong Google Chrome và sự vô cảm của javascript của tôi đang giữ tôi khỏi giải pháp.Nhấp vào sự kiện kích hoạt trong IE/Firefox, nhưng Chrome đang bỏ sự kiện chuyển nhượng

Tôi có trang ASP có kiểm soát <asp:Panel>. Trong bảng điều khiển, tôi đã thiết lập một hộp tìm kiếm đơn giản và đang sử dụng một số <asp:LinkButton> để khởi chạy tìm kiếm. Người dùng nhập văn bản tìm kiếm của họ và có thể nhấn enter (cho usability sake) và kết quả tìm kiếm sẽ hiển thị. Điều này làm việc trong IE, nhưng không có trong FireFox. Có một documented fix mà tôi đã áp dụng cho trang của mình và đã thành công để FireFox hoạt động. Vàng.

Ngoại trừ, bản sửa lỗi không hoạt động trong Google Chrome! Một chút fishy, ​​tôi cháy Firebug để gỡ lỗi mã ... oh chờ đợi ... đó là một vấn đề chỉ Chrome. OK, tôi có thể xử lý javascript gỡ lỗi mà không cần Firebug (sob) - Tôi kích hoạt trình gỡ rối Chrome và thực hiện từng bước. Hóa ra là bản sửa lỗi javascript, được đề cập trước đó, đang bị Chrome xóa.

Kịch bản sửa chữa chạy trên tải trang và sửa đổi các handler nhấp chuột của 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'); 
} 

Và khi chạy trang trong trình gỡ lỗi chrome tôi bước vào function WebForm_FireDefaultButton() và nhận được đến dòng:

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

và vì một lý do nào đó, defaultButton.click đã trở thành "undefined". Tôi đang bối rối ... Tôi đang thiếu gì?

Ngoài ra, tôi không sử dụng jQuery và nó không phải là giải pháp khả thi.


HTML sản xuất:

<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

Tôi không phải là một anh chàng ASP, bạn có thể đăng HTML của bảng điều khiển sản xuất không? –

+0

Tôi gặp sự cố tương tự, trong Chrome, tôi có thể truy cập vào HTMLAnchorElement (một thẻ ) nhưng không có hàm click(), mặc dù nó cần. –

Trả lời

Các vấn đề liên quan