0

JQueryUIタブも追加したWebページがあります。HTMLコードは、私が制御できないサードパーティによって生成されますが、ほとんどの場合JQueryが期待するとおりです。私のマシンでページを表示すると、正しく機能していますが、クライアントマシンは上部にタブを表示しますが、すべてのタブの内容は最初のタブの下に次々に一覧表示されます。つまり、タブは検出されますが、コンテンツDivは検出されません。私はそれをクロームで試しましたが、タブは正しく機能します。

作業中:IE 8.0.6001.19393で壊れています:IE 8.0.7601.17514

ブラウザのコンテンツタブに影響を与えるこれら2つのブラウザバージョンの違いは何ですか?ブラウザのアップグレードは企業レベルで設定されているため、オプションではありません。

更新:前述のように、タブをレンダリングする前にいくつかの調整が必要なsethtmlに対して作業する必要があります。主に、タブのリンクのhrefが正しくない状態で始まっているのは、非表示のアンカー、つまりhref = "#profile_1"である必要があるときにhref = "#profile1"を指していることです。

このコードを使用して、タブを呼び出す前にURLをリセットします。

    var i = 1;
    $('#ProfileTOC ul li a').each(function () {
        $('#profile' + i).remove();
        $(this).attr('href', '#profile_' + i);
        i++;
    });

Jqueryコードを調べてみると、これまでにわかった唯一の違いは、タブが作成されたときに「islocal」を呼び出し、動作中のブラウザーではtrueを返し、壊れたブラウザーではfalseを返します。JQueryが機能するタブアンカーに完全なhttp:// * URLを使用しているのに対し、壊れたブラウザはhttp://が完全に欠落している#anchorURLのみを使用している理由です。これにより、「islocal」はfalseを返します。私はそれが異なることをしているように見えるマップ関数だと思います:

    this.anchors = this.tabs.map(function() {
            return $( "a", this )[ 0 ];
        })
        .addClass( "ui-tabs-anchor" )
        .attr({
            role: "presentation",
            tabIndex: -1
        });

この後、一方のブラウザには各アンカーの完全なURLがあり、もう一方のブラウザには相対URLがあります。URL変更コードを削除すると、URLは再びフルパスになりますが、明らかに正しくありません。

JQuery UIコードをハッキングしてislocalチェックを削除し、タブが機能するようにしましたが、その理由を知り、jQueryUIコードをハッキングせずに機能させることができます。

4

1 に答える 1

0

JQuery UIコードをハックして、islocalチェックを削除しました。

于 2013-03-21T15:37:37.967 に答える