在IE/Firefox中点击事件触发,但Chrome浏览器正在放弃事件分配

问题描述:

我正在调试我的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

我不能确定为什么这在Chrome中发生的事情,没有任何其他浏览器。但注册脚本在PageLoad上执行解决了这个问题。

<body onLoad="DefaultButtonFix()">