2

我在 javascript 中有这个功能:

function loadPage (url){
  showLoadPageGif();         // visibility On
  document.location.href = getPath + "/" + url ;  
}

当我使用此功能时,GIF 图像显示在屏幕上,但无法正常工作。以前有人打过,有这个问题吗?谢谢

4

3 回答 3

7

我最近使用动画 SVG 作为伪元素中的背景图像遇到了这个问题。我故意在我的网络服务器上设置了很大的延迟,以便在window.location = url;所有其他 CSS 动画和悬停仍然有效,但 SVG cog 卡住之后,我可以留在当前页面。

window.location在玩了一些之后,我发现如果我提交了一个 GET 表单,而不是更改,动画会继续运行。

var url;
//load & setup loading animation
//then generate and submit form with a slight delay
setTimeout(function(){
  var new_form;
  new_form = document.createElement('form');
  new_form.method = 'GET';
  new_form.action = url;
  document.body.appendChild(new_form);
  new_form.submit();
}, 100)

在 safari 5.1、firefox 24、chrome 32 上测试

于 2014-02-12T23:39:28.273 回答
3

我假设您的意思是“GIF动画停止”。

这是正确的行为。由于您转到新页面,因此旧页面的所有资源都被释放。这当然包括 GIF 本身。

您不会“看到”这种情况发生,因为当您分配location.href.

您需要做的是使用 AJAX 请求新页面,然后在成功处理程序中用新页面替换整个 DOM。

IE6 中有一个错误,它会在您启动 AJAX 请求时停止动画;要解决这个问题,只需src再次分配图像的属性(即img.src = img.src;)重新启动它们。

于 2013-02-08T12:56:57.530 回答
2

您使用的是哪个浏览器?如果您使用的是 IE,我需要这样做一次:

var loadingFigure = $('#myImage');
var html = loadingFigure.html();            
window.location.href = 'myImage';
loadingFigure.html(html);

对于 Firefox 更复杂,您需要使用 iframe 并执行以下操作:

<iframe id="myIframe" src="/images/busy.gif" scrolling="no" frameborder="0"></iframe>

$('#myIframe').attr('src', '/images/busy.gif');
window.location.href = 'mylocation'       
$('#myIframe').attr('src', '/images/busy.gif'); 
于 2013-03-05T19:11:14.817 回答