IE6 textBox.focus(); 导致“意外调用方法或属性访问”

现在问题已经解决了:)感谢大家的帮助和关注!

我在“ oAutoCompleteTextBox.focus() ;”行中间歇性地在IE6中收到JS错误“对方法或属性访问的意外调用”。 希望有人之前已经看过这个问题,并且可以提供一些有关如何解决它的见解。 以下是用法的上下文。

$(document).ready(function () { ... oAutoCompleteTextBox = GetElement(''); ... SetupDefaultValues(); } function SetupDefaultValues() { ... if(canFocus(oAutoCompleteTextBox)) { oAutoCompleteTextBox.focus(); } } 

我在stackoverflow上的第一篇文章 – 是的!

好的,问题是jQuery $(document).ready()事件没有在updatepanel异步回发上触发。 解决方案是将ready()中的函数定义重构为显式函数定义( 即函数pageReady(){…} ),并将新的pageReady()事件处理程序添加到ASP.net Sys.WebForms.PageRequestManager endRequest事件中。仅在异步回发时触发。

所以代码现在看起来像这样:

 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(pageReady); $(document).ready(pageReady); function pageReady() { ... oAutoCompleteTextBox = GetElement('<%=this.AutoCompleteTextBox.ClientID%>'); ... SetupDefaultValues(); } function SetupDefaultValues() { ... if(canFocus(oAutoCompleteTextBox)) { oAutoCompleteTextBox.focus(); } } 

感谢大家的帮助和关注 – 花了一段时间才弄明白,我很高兴它已经解决了:)

oAutoCompleteTextBox是全局声明的吗? 您在document.ready函数中设置它,但尝试在另一个函数中使用它。

你确定它是一个文本框吗? “canFocus”function有什么作用? 警告在该行,oAutoCompleteTextBox.tagName,然后如果它是“INPUT”警报.type,如果它是“文本”然后你有问题:)知道IE6,它可能是一个时间问题,但是,如果你在一个调用setupdefaultvalues settimeout为10秒,我可以工作