0

次の投稿とほぼ同じ質問があります(両方の回答を試しましたが、どちらも機能しませんでした)。ただし、TabContainerがページの最後にあるかどうかについて心配していないことを除いて-ページを防止したいtabcontainer を含む updatePanel が更新されたときに、任意の tabcontainer に上下にスキップしないようにします。(もちろん、TabContainer ではなく、実際には TabPanel (アクティブなもの) がフォーカスを取得していると思います。)

AjaxToolkit: ページの最後の TabContainer はページの読み込みに重点を置いています

上記のリンクでポスターが述べているように、明示的にフォーカスを設定していないため、フォーカスが tabPanel に設定されている理由がわかりません。デバッグすると、Ajax によってロードされた、フォーカスを設定する JavaScript があることがわかります。

設定できるプロパティがない限り(autofocus = false?)、実行中のajax JavaScriptをオーバーライドして、フォーカスが設定されないようにします。

ただし、これについてどうすればよいかわかりません。その JavaScript ソースはどこかに公開されているので、それをコピーしてフォーカス命令をコメントアウトし、オーバーライドできますか?

アップデート

私は ajax スクリプトのリリース バージョンをデバッグしていました。利用可能なデバッグ バージョンがあることに気づきませんでした。web.config でデバッグを行っていましたが、明らかに ScriptManager にも ScriptMode="Debug"; が必要です。それを設定すると、内部 ajax コードのデバッグ バージョンが取得されます。まだ完了していませんが、フォーカスを設定するように要求せずにフォーカスを設定し、それをオーバーライドする攻撃的なコードを見つけることができるはずです。完了したら、回答を投稿します。

4

1 に答える 1

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;
        }

編集:うわー、これが上に投稿した元のリンクで提供されていたものとまったく同じコードであることに気付きました。それが私のために働くのを妨げる前に、私は愚かな間違いを犯したに違いないと思います.

于 2012-06-22T18:32:31.733 に答える