在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>
答
我不能确定为什么这在Chrome中发生的事情,没有任何其他浏览器。但注册脚本在PageLoad上执行解决了这个问题。
<body onLoad="DefaultButtonFix()">
我不是一个ASP家伙,你可以发布面板产生的HTML吗? – 2009-07-10 22:25:18