1

这是要了我的命。在 IE7 和 8 中,使用 jqModal,在加载模式内容之前屏幕会闪烁黑色。我已经设置了一个测试应用程序来向您展示正在发生的事情。我已经完全从网站上获取了 jqModal,没有任何更改,没有可能影响我的应用程序的外部 css。它在所有其他浏览器(包括 IE6)中都能完美运行。

http://jqmtest.heroku.com/

因此,前两个链接是 ajax 调用,第二个是直接内联 HTML。(我最初认为是影响它的 ajax,但似乎并非如此,然后我认为它是缓慢加载 ajax,因此有两个不同的 ajax 链接)

疯狂的是 jqmodal 网站本身在 IE 中完美运行,没有闪烁的黑色,但我看不出我做错了什么。代码很简单

html:

<body>
<div id="ajaxModal" class="jqmWindow"></div>
<div id="inlineModal" class="jqmWindow">
  <div style="height:300px;position:relative;">  
    <p>Here's some inline content</p>
    <a href="#" onclick='$("#inlineModal").jqmHide();return false;' style="position:absolute;bottom:10px;right:10px">Close</a>
  </div>
</div>
<div style="width:600px;height:400px;margin:auto;background:#eee;">
  <p><a href="/ajax/short" class="jqModal">Short loading modal</a></p>
  <br />
  <p><a href="/ajax/long" class="jqModal">Longer loading modal</a></p>
  <br />
  <p><a href="#" class="jqInline">inline modal</a></p>
</div>    
</body>

Javascript:

<script type="text/javascript">
  $(function(){
    $("#ajaxModal").jqm({ajax:'@href', modal:true});
    $("#inlineModal").jqm({modal:true, trigger:'.jqInline'});
  });
</script>

CSS 与从 jqModal 网站下载的完全一样,所以我会省略它,但你可以在我的应用程序上看到它

有没有人经历过这个?我不明白他的作品和我的不明白。

4

3 回答 3

1

我想我找到了解决这个晦涩问题的方法。

改变

o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});

o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100}).hide();

和改变

h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;

h.o=(o)?o.addClass(c.overlayClass).prependTo('body').show():F;
于 2011-10-07T17:53:27.087 回答
0

在玩弄了源代码之后,我找到了一种解决方法。将第 41 行(在 jqModal r14 中)从:

if(c.modal) {if(!A[0])L('bind');A.push(s);}

if(c.modal) {A.push(s);}

我还在这里托管了修复程序以及IE7 的演示。我不完全确定该更改会做什么,因为源已被缩小(尽管我猜它可能需要同时显示多个模态),因此请务必对其进行全面测试以确保它不会中断任何事物。

于 2009-10-18T06:20:38.487 回答
0

我尝试了 jimyi 的解决方案,但它并没有为我解决问题。所以这就是我想出的:

在我的 CSS 中,我添加了一条新规则

.jqmOverlay { display: none; }

当我弹出那个特定的模式对话框时,我会这样做:

$("#pleaseWait").jqmShow();   // show the modal dialog
$(".jqmOverlay").fadeIn(10);  // very quick fade-in

淡入可以覆盖 CSS 规则并消除黑色闪光。

注意:我还没有测试过,但是 fadeIn 操作可能会干扰显示一个模态对话框,其中覆盖层不是完全透明的。

于 2010-03-24T19:27:45.183 回答