我正在调试我的网络应用程序,但遇到了困难。我仅在 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>