2009-12-28 82 views
1

問題現在resopled :)感謝大家的幫助和關注!IE6 textBox.focus();導致「意外調用方法或財產訪問」

我發現了JS錯誤「以方法或屬性訪問意外呼叫」在IE6間歇上線「oAutoCompleteTextBox.focus();」。希望以前有人看到過這個問題,可以提供一些關於如何解決問題的見解。以下是使用情況。

$(document).ready(function() { 
    ... 
    oAutoCompleteTextBox = GetElement('<%=this.AutoCompleteTextBox.ClientID%>'); 
    ... 
    SetupDefaultValues(); 
} 

function SetupDefaultValues() { 
    ... 
    if(canFocus(oAutoCompleteTextBox)) { 
     oAutoCompleteTextBox.focus(); 
    } 
} 

我的第一篇文章在stackoverflow - YAY!

回答

1

好的,所以問題是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(); 
    } 
} 

感謝大家的幫助和關注 - 一段時間以後才弄清楚,我很高興它解決了:)

+0

但是你在這裏做的所有延遲onload幾個週期,哪些settimeout可以做...這是一個時間問題不是嗎? – Ayyash 2009-12-29 02:00:18

+0

事實證明,時間不是問題......問題在於pageReady()方法沒有被調用,因爲在ASP內的異步回發期間,jQuery $(document).ready()事件沒有被觸發。淨UpdatePanel。因此oAutoCompleteTextBox未正確初始化。更改是使用Sys.WebForms.PageRequestManager endRequest事件在異步回發上初始化var oAutoCompleteTextBox。 – HOCA 2009-12-29 02:12:52

+0

但等待,如果ready()沒有被調用它是如何調用:SetupDefaultValues()並拋出一個錯誤?順便說一句,對話框沒有自己的窗口對象,所以如果document.ready依賴於窗口。當你打開一個對話框時,你是否將窗口對象與它一起傳遞?我離題了,你的解決方案工作?請繼續:) – Ayyash 2009-12-30 06:26:51

0

oAutoCompleteTextBox是全局聲明的嗎?您將它設置在document.ready函數中,但試圖在另一個函數中使用它。

+0

是,oAutoCompleteTextBox聲明全球。 – HOCA 2009-12-28 20:09:25

0

你確定它是一個文本框嗎? 「canFocus」功能是做什麼的?如果它是「INPUT」警告類型,如果它是「文本」,那麼你有問題:)知道IE6,它可能是一個時間問題,但是,如果你調用setupdefaultvalues在一個settimeout 10秒,我可能會工作

+0

我確實驗證了oAutoCompleteTextBox實際上是一個TextBox(w/tagName = INPUT)。你可能是對的時間問題,我也懷疑它可能與時間有關 - 特別是因爲錯誤是間歇性的:( – HOCA 2009-12-28 21:06:35

+0

哦,等待,是隻讀還是禁用? – Ayyash 2009-12-28 21:38:43

+0

它不是隻讀或禁用 - 但它不' t有一個parentElement ...我想知道這是否與坐在模態對話擴展器中的事實有關 – HOCA 2009-12-28 22:54:50