【问题标题】:Click event fires in IE/Firefox, but Chrome is dropping the event assignment在 IE/Firefox 中触发点击事件,但 Chrome 正在放弃事件分配
【发布时间】:2010-11-06 19:36:07
【问题描述】:

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

我有一个带有<asp:Panel> 控件的ASP 页面。在面板中,我设置了一个简单的搜索文本框,并使用<asp:LinkButton> 启动搜索。用户输入他们的搜索文本,应该能够按回车键(usability sake),搜索结果将显示。这适用于 IE,但不适用于 FireFox。我已将documented fix 应用到我的页面并成功使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,它不是一个可行的解决方案。


生成的 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> 

【问题讨论】:

标签: javascript google-chrome debugging dom-events


【解决方案1】:

我无法确定为什么在 Chrome 和其他浏览器中都会发生这种情况。但是注册要在 PageLoad 上执行的脚本解决了这个问题。

<body onLoad="DefaultButtonFix()">

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2012-02-10
    • 1970-01-01
    • 2012-05-10
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多