2012-06-20 23 views
0

我幾乎和以下帖子中的問題完全相同(並且我嘗試了兩個答案,但都無效),但我並不擔心TabContainer是否最後在頁面上 - 我想要防止頁面在包含tabcontainer的updatePanel被更新時向上或向下跳到任何tabcontainer。 (當然,我猜它實際上是一個的TabPanel - 活動一個 - 獲得焦點,不是真正的TabContainer的)AjaxToolkit:頁面上的TabContainer專注於回傳

AjaxToolkit: the last TabContainer on the page is focused on page load

正如海報上寫着,在上面的鏈接,我還沒有明確設定任何焦點,所以我不知道爲什麼焦點被設置爲我的tabPanel。當我調試時,我可以看到有一些由Ajax加載的JavaScript設置焦點。

我猜我想做什麼,除非有一些屬性,我可以設置(autofocus = false?)是重寫任何Ajax JavaScript正在執行,以便焦點不會被設置。

但是,不知道如何去解決這個問題。該javascript源是否在某處發佈,所以我可以複製它,註釋掉焦點指令,並覆蓋?

UPDATE

我調試AJAX腳本的發行版本。我沒有意識到有一個調試版本可用。我在web.config中進行了調試,但顯然ScriptManager也需要ScriptMode =「Debug」;當我設置時,我得到內部ajax代碼的調試版本。我還沒有完成,但我認爲現在應該能夠找到設置焦點的令人反感的代碼,而不需要我設置任何焦點並覆蓋它。我完成後我會發佈一個答案。

回答

3

最後通過調試ajax來修復它,找到令人反感的代碼並覆蓋它。

如果任何人有同樣的問題,這是AjaxCotnrolToolkit版本4.1.60501.0,下面駐留在Tabs.Tabs.js;只需將此腳本粘貼到您的頁面上即可停止令人討厭的自動對焦。

我現在已經完全關閉它,但當然如果這是你想要的,它可以有條件關閉。

下面和原始方法的唯一區別是註釋行。

Sys.Extended.UI.TabContainer.prototype._app_onload = function (sender, e) { 
      if (this._cachedActiveTabIndex != -1) { 
       this.set_activeTabIndex(this._cachedActiveTabIndex); 
       this._cachedActiveTabIndex = -1; 

       var activeTab = this.get_tabs()[this._activeTabIndex]; 
       if (activeTab) { 
        activeTab._wasLoaded = true; 
        //activeTab._setFocus(activeTab);  // the only change made to this prototype 
       } 
      } 
      this._loaded = true; 
     } 

編輯:哇,我只是注意到這是完全相同的代碼,是我在上面張貼的原始鏈接提供的。我想我在這之前肯定犯了一些愚蠢的錯誤,無法爲我工作。

+0

今天這對我有幫助..謝謝 –