2011-03-18 117 views
0

我有一个JavaScript类,当Ajax请求发送到服务器时,它会在另一个div的内容顶部显示部分不透明div。Ajax请求返回后IE9刷新

当请求返回时,JavaScript类隐藏了部分不透明的div ....它工作得很好......有点。

现在,在IE9中,当Ajax请求完成时,只有当用户移动鼠标时,部分不透明度才会隐藏。

所以,我的问题是,我该如何强制浏览器做它应该做的事情?

这是我非常简单的函数,是请求返回给浏览器之后调用:

_hideBlockingDiv: function() { 
    if (this.get_blockingDivClientID()) { 
     var blockingElement = $get(this.get_blockingDivClientID()); 

     if (blockingElement != null) { 
      blockingElement.style.display = 'none'; 
      //I know that this method is executing correctly because I "hi" showed 
      //up properly...but the element remained visible: 
      blockingElement.innerHTML = 'hi'; 
     } 
     //if I add the alert then everything works fine in IE9 
     //if I don't then the page will remain the same until the user moves their mose 
     //alert("done"); 



    } 
} 

请注意,我没有使用JQuery。 我使用AJAX.NET库,因为我是一个.NET开发(和JQuery并没有成为流行,直到几年我实现我的支持Ajax的服务器控件后)

感谢

-Frinny

回答

0

事实证明,问题只存在于当时我正在使用的IE9的测试版本中。 IE9完整版发布后,此问题就消失了。

0

如何以及从哪里调用_hideBlockingDiv函数?由于您使用的是MS Ajax库,因此您可能希望在客户端拥有一个页面加载处理程序,并从该处理程序中调用此函数。所以基本上

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(){ 
_hideBlockingDiv(); 
}); 

希望这有助于!

+0

感谢您的回复。我已经在课上有这个了。我不想发布整个课程,因为它有很多代码,没有必要真正展示它。正如我之前所说的,该方法执行...我能够将div的innerHTML设置为“hi”并调用“alert”方法...但是样式“display:none”只是在应用后才应用我移动我的鼠标。 – Frinavale 2011-03-18 14:52:50