1

htmlページにたくさんの<a>sがあり、それぞれがaに関連付けられておりform、フォーム自体がサビットしている間に「読み込み中」の画像を表示したいと考えています(これには時間がかかるようですが、これは別の問題かもしれません)。

aだから私はそれらのonclickイベントで少しハックなことをしました

frmContent = $ ( this ).nextAll ( "form" ).clone ();
$ ( "body" ).html ( "<div class='preload'><img src='./img/loading.gif' /><br/>Caricamento in corso<\/div>" );
$ ( "body" ).append(frmContent);
frmContent.submit ();

これはFirefoxとIE9の両方で機能するようです。問題は、互換性モードが有効になっている場合、これが機能しないことです。

また、ブラウザがIE7として認識されるときに、次のように別の何かを使用することも考えました。

if ( $.browser.version != "7.0" ) {
    frmContent = $ ( this ).nextAll ( "form" ).clone ();
    $ ( "body" ).html ( "<div class='preload'><img src='./img/loading.gif' /><br/>Caricamento in corso<\/div>" );
    $ ( "body" ).append(frmContent);
    frmContent.submit ();
} else {
    $ ( this ).nextAll ( "form" ).submit ();
}

したがって、プリロードアニメーションは表示されませんが、これは目的に反します。

ユーザーに互換モードをオフにするように強制することはできず、このページはIE7でも機能する必要があるため、そのスニペットの何が問題になっていますか?それを行うためのより良い方法はありますか?

4

1 に答える 1

2

送信する前に、フォームを本文に追加してください。

frmContent = $ ( this ).nextAll ( "form" ).clone ();
    $ ( "body" ).html ( "<div class='preload'><img src='./img/loading.gif' /><br/>Caricamento in corso<\/div>" );
    frmContent.hide();
    $ ( "body" ).append(frmContent);
    frmContent.submit ();

回避策のように。すべての本文のHTMLをpreloaddivに置き換えて、フォームのクローンを作成する理由はありません。送信する前にすべてを非表示にして、preloaddivを追加するだけです。

    $ ( "body" ).children().hide();
    $ ( "body" ).append( $("<div class='preload'><img src='./img/loading.gif' /><br/>Caricamento in corso<\/div>") );
    $ ( this ).nextAll ("form").submit();
于 2012-11-07T14:39:20.923 に答える