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

Gav*_*ler 6 javascript debugging google-chrome javascript-events

我正在调试我的Web应用程序并且遇到了障碍.我在Google Chrome中遇到了一种行为,而我的javascript无能使我无法解决问题.

我有一个带<asp:Panel>控件的ASP页面.在面板中,我设置了一个简单的搜索文本框,并使用an <asp:LinkButton>来启动搜索.用户输入他们的搜索文本并且应该能够输入(为了可用性)并且将显示搜索结果.这适用于IE,但不适用于FireFox.有一个记录在案的修复程序,我已经应用到我的页面并成功使FireFox运行.金.

除此之外,此修复程序在Google Chrome中无效!有点可疑,我启动Firebug来调试代码......哦等等......这是Chrome唯一的问题.好的,我可以在没有Firebug(sob)的情况下处理调试javascript - 我启动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');
}
Run Code Online (Sandbox Code Playgroud)

当在chrome调试器中运行页面时,我进入function WebForm_FireDefaultButton()并进入该行:

if (defaultButton && typeof(defaultButton.click) != "undefined") { ... }
Run Code Online (Sandbox Code Playgroud)

由于某种原因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> 
Run Code Online (Sandbox Code Playgroud)

Gav*_*ler 3

我无法确定为什么在 Chrome 中发生这种情况,而在其他浏览器中却没有。但注册脚本在 PageLoad 上执行就解决了这个问题。

<body onLoad="DefaultButtonFix()">
Run Code Online (Sandbox Code Playgroud)