1

<a>我在 html 页面上有一堆s,每个都与 a 相关联,form并希望在表单本身 sumbits 时显示“加载”图像(这似乎需要很长时间,但也许这是另一回事)。

a所以我在那些s的 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 ();

就像一个解决方法。我认为没有理由用预加载 div 替换所有正文 HTML 并克隆一个表单。您可以在提交之前简单地隐藏所有内容并附加预加载 div:

    $ ( "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 回答