Click 事件在 IE/Firefox 中触发,但 Chrome 正在放弃事件分配

2023-11-25

我正在调试我的网络应用程序,但遇到了困难。我仅在 Google Chrome 中遇到一种行为,而我的 javascript 无能使我无法找到解决方案。

我有一个 ASP 页面,其中包含<asp:Panel>控制。在面板中,我设置了一个简单的搜索文本框并使用<asp:LinkButton>启动搜索。用户输入搜索文本并且应该能够按回车键(例如可用性的缘故),然后将显示搜索结果。这在 IE 中有效,但在 FireFox 中无效。有一个记录修复我已将其应用到我的页面并成功使 FireFox 正常运行。金的。

但该修复在 Google Chrome 中不起作用!有点可疑,我启动 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,它不是一个可行的解决方案。


The HTML produced:
<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()">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Click 事件在 IE/Firefox 中触发,但 Chrome 正在放弃事件分配 的相关文章