任何人都有解决Internet Explorer中“剩余n项”问题的想法?

时间:2009-04-09 15:53:04

标签: asp.net jquery css internet-explorer jquery-ui

8 个答案:

答案 0 :(得分:10)

如果您在代码中使用任何行为(或您使用的库使用它们),例如

<style>
  body * {
    behavior:url(anyfile.htc);
  }
</style>

然后我知道 NO解决方案,IE8(和IE7)的 bug report filed in IE Feedback on Connect 因以下毯子而被拒绝罐头声明:

  

这是IE中的已知错误,也发生在以前的IE版本中。你的原因   在状态栏中看到数百个请求是因为IE尝试读取htc文件   从磁盘一遍又一遍地为页面上的每个元素。不幸的是,此时此刻   我们不打算解决这个问题。我们将在未来的IE版本中考虑这一点。

     

祝你好运,   IE团队

由于这与IE7开发收到的回复相同,我不会屏住呼吸 EVER 解决这个问题。

<强>更新

根据您的更新说明另外考虑一下。如果页面没有响应,就好像它仍在加载某些内容,请检查呈现的DOM内容是否有对document.write()的任何调用{您可能没有添加它们,但lib可能有}。

如果它们存在,请尝试在完成后添加document.close();语句,这将告诉浏览器您已“完成”渲染。

PS这里是一个链接,你可以保存为书签(右键点击“添加到收藏夹...”),它将显示生成的DOM,因为IE看到它(一个丑陋的quoteLess = CaMelCaSeMeSS)搜索结果找到可能导致问题的任何古怪代码。

IE Generated Source :(将此添加为任何书签的位置,编辑器不会让我将其链接起来)

javascript:'<xmp>'+window.document.body.parentNode.outerHTML+'</xmp>';

答案 1 :(得分:7)

之前我遇到过类似的问题,这是因为在页面中间有一个长时间运行的JS片段,浏览器正在等待它完成执行才能完成下载站点的其他文件

我不确定这对你是否是一个问题,但它以类似的方式表现出来。

答案 2 :(得分:4)

我过去曾使用this取得了巨大成功。您还可以查看this博文。

答案 3 :(得分:3)

关于缓存图像,我不得不使用HTTP处理程序来正确缓存图像。具体来说,CSS菜单中有一张箭头的图片会导致您正在处理的确切行为,因为它在每个菜单中多次使用。

以下是处理程序的代码:http://www.groovybits.com/SrcViewer.aspx?inspect=~/PersistantImage.ashx

您可以在AppSetting中添加web.config来使用它:

<add key="UniqueImageName" value="~/Images/image_name.gif"/>

使用处理程序而不是图像本身的路径引用每个图像的来源:

~/Handlers/PersistantImage.ashx?key=UniqueImageName

答案 4 :(得分:3)

这与IE中透明PNG的“修复”有关。

我在使用网站时遇到了同样的问题,很快发现没有有效的解决方案可以修复此问题和透明PNG图像。

答案 5 :(得分:1)

这家伙有一个great writeup on IE6 caching problems,但博客似乎已失效。

他将问题分成两部分:

  1. IE6 background-image flicker
  2. IE错误/功能:Internet Explorer Cache Is Not Used When You Run innerHTML Code to Insert the Same Image Multiple Times。微软建议两个非常糟糕的解决方法(在我的情况下,他们甚至没有工作),但你也可以通过确保不通过innerHTML插入<img>标签来解决这个问题。
  3. 问题#2的自然解决方案是使用background-image代替<img>代码;阴险地说,这会迫使你进入问题#1;结果,你可能会打败问题#2,错误地认为你没有取得进展。

    就我而言,当我用innerHTML 和<img>代码替换<div> background-image代码时,我立即解决了这两个问题>使用document.execCommand("BackgroundImageCache", false, true)来修复闪烁。

答案 6 :(得分:1)

我找到了大部分项目的解决方案。

我几乎在每个项目中使用 jQuery Fancybox插件。如果你正在使用Fancybox并且“x items remaining”问题,那么这就是解决方案:

在靠近文件末尾的fancybox的css文件中,有一堆IE过滤器可以正确加载半透明png。像这样:

.fancybox-ie6 #fancybox-close { background: transparent; 
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader
(src='fancybox/fancy_close.png', sizingMethod='scale'); }

您可以注意到src属性中的路径是错误的。

只需修复所有过滤器的路径(大约有20个),问题就解决了!

我建议设置一个相对于root的路径,如下所示:

.fancybox-ie6 #fancybox-close { background: transparent; 
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader
(src='/css/fancybox/fancy_close.png', sizingMethod='scale'); }

答案 7 :(得分:1)

我通过以下方式解决了这个问题。这是一个黑客,但它的工作原理。

只需在身体标记后面使用隐形IMG标记加载图片。例如,

<body>
  <img src="problem_image_here.jpg" style="display:none">

  ...
</body>

IE似乎通过css加载相同的图像,此后没有任何问题。