我正在调试我的网络应用程序并且遇到了问题。我在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>
答案 0 :(得分:3)
我无法确定为什么在Chrome和其他浏览器中都没有发生这种情况。但是注册要在PageLoad上执行的脚本解决了这个问题。
<body onLoad="DefaultButtonFix()">