如何在IE中的jQuery对话框中显示动画GIF?
我们有以下代码似乎在除IE之外的每个浏览器中都能正常工作:
var d = $(''); d.dialog({modal:true});
在IE中它似乎工作得很好,除了微调器不旋转(它是一个动画GIF)。
这是怎么回事?
我试过“一切”但是animation.gif spinner在jQueryUI模式对话框中不起作用。 有些浏览器很好但是Firefox拒绝工作。 去看看原因是什么。 然后发现这个超级优秀的非img微调器组件。 给fgnass所有的学分。
(注意:在这篇文章的最后,我编辑了一个新的答案修复animation.gif问题)
http://fgnass.github.com/spin.js/
// Show loading(processing) modal dialog function showLoading(sTitle, str) { if (sTitle==undefined) sTitle = "Processing"; if (str==undefined) str = "Processing..."; var strBody = "" + str + ""; $("#uidialog").html(strBody); $("#uidialog").dialog({ title: sTitle, modal: true, resizable: true, width: "auto", height: "auto", close: function(event, ui) { }, buttons: { "Close": function() { $(this).dialog("close"); } } }); // must use css spinner, animated gif did not work in every browser var opts = { lines: 11, length: 7, width: 3, radius: 4, corners: 1, rotate: 0, color: '#000', speed: 0.7, trail: 38, shadow: false, hwaccel: true, className: 'spinner', zIndex: 2e9, top: '0', left: '0' }; var target = document.getElementById("spinnerdiv"); var spinner = new Spinner(opts).spin(target); }
我已经运行过Firefox,IE8,Chrome,Opera,Android平板电脑(股票和firefoxbeta),诺基亚Lumia800,诺基亚C7浏览器。 一切正常。
编辑1(使用gif动画)这是我能够修复某些浏览器上没有动画的https://stackoverflow.com/questions/10521382/how-do-you-display-animated-gifs-within-a-jquery-dialog-in-ie/spinner.gif的方法。 诀窍是在html页面加载时保持spinner div可见状态。 首先在jQuery init函数中隐藏它。 然后你可以随时显示+隐藏微调器div并将其设置为动画。
Spinner Test SHOW HIDE
也许在包含div(而不是内容本身)上执行操作就可以了。 我从来没有遇到过显示带有GIF动画的模态div的问题。
var d = $(''); d.dialog({modal:true});
我正在做这样的事情:
$('#someDiv').css('background', '#ddd url("Images/loading.gif") no-repeat 8.1em 50%');
我遇到过同样的问题。 在打开对话框之前对它进行排序设置src。
Jscript脚本
document.getElementById("ProcessImg").src = "https://stackoverflow.com/questions/10521382/how-do-you-display-animated-gifs-within-a-jquery-dialog-in-ie/Images/Processing.gif"; $("#dvprocessing").dialog({ width: 149, height:125, modal: true, closeOnEscape: false, resizable: false, draggable: false, position: ['center', 'center'] }); $(".ui-dialog-titlebar").hide(); /*To hide the title bar*/