2009-06-29 46 views
6

我正在調試我的Web應用程序並且遇到了問題。我只在Google Chrome瀏覽器中遇到這種情況,而我的JavaScript無能爲力讓我無法接受該解決方案。在IE/Firefox中點擊事件觸發,但Chrome瀏覽器正在放棄事件分配

我有一個ASP頁與<asp:Panel>控制。在面板中,我設置了一個簡單的搜索文本框,並使用<asp:LinkButton>來啓動搜索。用戶輸入他們的搜索文本,並且應該能夠輸入(對於usability sake)並且搜索結果將顯示。這適用於IE,但不適用於FireFox。有一個documented fix我已經應用到我的頁面,並已成功地獲得FireFox的功能。金。

除此之外,該修補程序在谷歌瀏覽器中無法使用!有點可疑,我啓動了Firebug來調試代碼......哦,等等......這只是Chrome的問題。好的,沒問題,我可以在沒有Firebug的情況下處理調試javascript(sob) - 我啓動了Chrome調試器並逐步完成代碼。事實證明,前面提到的JavaScript修復程序正在被Chrome刪除。

的修復腳本在頁面加載運行,並修改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'); 
} 

以及在Chrome調試器中運行的頁面,當我踏進function WebForm_FireDefaultButton(),並獲得該行:

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

由於某種原因defaultButton.click已成爲"undefined"。我很難過...我錯過了什麼?

此外,我沒有使用jQuery,它不是一個可行的解決方案。


的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> 
+0

我不是一個ASP傢伙,你可以發佈面板產生的HTML嗎? – 2009-07-10 22:25:18

回答

3

我不能確定爲什麼這在Chrome中發生的事情,沒有任何其他瀏覽器。但註冊腳本在PageLoad上執行解決了這個問題。

<body onLoad="DefaultButtonFix()"> 
相關問題