[jquery][jquery-ui]任何人都有解决思路 " n 剩余的项目 " Ie 浏览器上的问题吗?

标签: jQuery jQuery-UI
发布时间: 2011/5/26 13:42:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在我的 asp.net 应用程序,这是 javascriptjQuery 沉重,但也使用主页和。净 Ajax 件,我一直看到状态 IE 6 栏 (和偶尔 IE 7) 的消息"剩余的 2 项"或者"剩余的 15 项"跟着"加载 somegraphicsfile.png|gif "。此消息永远不会消失,可能或不可能会阻止运行页的某些功能 (这看来确实会停下来,但我不肯定)。

我可能会导致这种情况发生的只刷新.aspx 年龄,但项目的数量的 99%的时间,而且,有时候,它提到的文件而异。通常是 2、 3、 12、 13 或 15。

我的答案的一派,有几个建议或解释。有些人还没工作对我们来说,和其他人不是实际的实现,或尝试。

这里的一些想法/理论:

  • IE 不缓存图像的权利,所以一再要求相同的图像,是否图像在页面上重复,并且服务器假定它应缓存本地,因为它已送达该页面上下文中。IE 显示图像正确,但坐在和等待服务器响应,也没有出现过。通常在页面上重复的文件,它说它等待。

  • 页面使用 PNG 图形具有透明度。诚然,但它们 jQuery UI 生成的 Themeroller 图形,根据 jQuery UI 的家伙们,是 IE 安全。JQuery UI 组件是使用 Png 的唯一的东西。我们的 PNG 引用都在 CSS,如果是有帮助。我已经更改某些图形从 PNG 为 GIF,但可能只是说它等待 somegraphicsfile.gif somegraphicsfile.png

  • 图像被指定 CSS 和/或 JavaScript,但都不当前正在显示的东西 (显示: 无项目为例)。这 可能 是真的,但如果是,那么我认为预加载图像会工作,但到目前为止,添加预加载器没有任何好处。

  • IIS 的缓存策略混乱的浏览器。如果这是事实,这是只有微软服务器软件与微软浏览器 (这不会给我根本惊喜) 的问题。不幸的是,没有多控制权将主持这个应用程序的 IIS 配置

任何人都已看到这并找到了对付它吗?尤其是对与 jQuery 和 jQuery UI 的 asp.net 应用程序吗?

更新

另一个数据点: 在至少一个页面,只评出 jQuery UI Datepicker 组件安装程序导致走开,问题,但我不认为 (或至少我不知道) 如果解决的所有页面。如果它不会"修复",我不得不换出插件,因为该功能需要在那里。好像目前是任何未决的问题,针对 IE6/7 jQuery-UI...

更新 2

我已检查 IIS 设置和"启用内容过期"是 是我的文件夹的任何的集。取消选中设置常见的建议,为解决此问题。

我有我始终可以使用以下方法创建错误的另一个、 简单,页面。我使用 jQuery UI 1.6rc6 文件 (尽管我也试过 jQuery UI 1.7.1,具有相同的结果)。刷新页面,其中包含 jQuery UI Datepicker 时才会出现问题。如果我注释掉 Datepicker 安装程序,这个问题就不复存在了。在这里我注意到当我这样做的几件事情:

  1. 此页面总是说"(1 item remaining) 下载图片 http:///images/Calendar_scheduleHS.gif",但仅当重装。
  2. 我看了 HTTP 记录,看到它从服务器请求该图像,每次它动态打开的不必考虑其缓存。
  3. 所有该图形的请求完成,并返回正确的图形。无标记代码 200 或 304 (指示服务器告诉 IE 使用缓存的版本)。为什么它说等待该图形时所有的请求已完成,我也不知道。
  4. 有一个其他页 (UI PNG 文件之一) 具有代码 304 (未修改) 上的图形。我设法在其上具有"剩余的 2 项"登录 HTTP 通讯的另一页,在两个不同的图形文件 (这两种用户界面 Png) 有 304 以及 (但不是列为"下载"。
  5. 此错误不是无害-页面并不完全符合。例如,如果单击按钮,应执行客户端操作之一时,页面刷新。
  6. 走出页面和回来,不会产生错误。
  7. 提出的脚本和脚本引用到底部的内容,这并不影响这一问题。该脚本仍在运行的 $(document).ready() 虽然 (它是太毛,除非一定要分出)。

最后更新和答案

有很多好的答案和下面的建议,但他们都完全是我们的问题。最接近之一 (和一把我带到解决方案) 是一个关于长运行 JavaScript,所以我颁发奖金那里 (我想我可以回答了我,但我宁愿将奖励通向解决方案的信息)。

这里是我们的解决方案: 我们有多个 jQueryUI datepickers (文档) $.ready 事件在脚本中包括从 asp.net 母版页上创建的。对此客户端页面,一个局部的脚本 (文档) $.ready 事件已毁在一定条件下的 datepickers 的脚本。我们不得不用"破坏"因为以前版本的 datepicker 了"禁用"的问题。当我们升级到最新版本的 jQuery UI (1.7.1),并替换为 datepickers 的"禁用"s"破坏"s 时,问题走 (或大多走-如果在加载页面时,你在做事情太快它是仍有可能获得"剩余的 n 项目"状态)。

发生了什么事,我的理论是这样:

  1. 页面内容加载,并已与 datepicker 类的 12 个文本框。
  2. 母版页脚本创建 datepickers 对这些文本框。
  3. IE 排队请求的每个日历图形独立因为 IE 不知道如何正确缓存动态图像的请求。
  4. 请求得到处理之前,客户端区域脚本会破坏这些 datepickers,因此不再需要的图形。
  5. IE 是留下一些孤立的请求,它不知道如何处理。

解决方法 1:

有过类似的问题,在此之前,它是由于长时间运行的 JS 块在页面的中间是,浏览器等待它完成执行之前,它将完成下载站点的其他文件。

我不能确定的如果这是你的问题,或没有,但它体现了以类似的方式。

解决方法 2:

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

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

然后有 没有解决办法 ,据我所知,IE8 (和 IE7) 的 连接上的 IE 反馈提交的 bug 报告 遭到拒绝为这两个版本,用下面的毯子罐头语句:

这是一个已知的 bug,在 IE 中,也会发生在以前的 IE 版本。你看到数以百计的状态栏中的请求的原因是因为 IE 对尝试读取 htc 文件从磁盘一次次地为每个页面上的元素。不幸的是,在这个时候我们不打算修复这。我们会考虑将来的 IE 版本。

最好的问候,IE 团队

由于这是 IE7 发展接获同样的答复我不会屏住上 曾经 有这固定。

更新:

更多的人认为基于您更新说明。如果页面不是很敏感的情况下,好像它仍在加载的东西,检查的呈现的 DOM 内容的任何调用 document.write() {你不可能添加它们,但可能有 lib}。

如果存在,请尝试添加 document.close(); 语句完成后,该信息将告诉浏览器您"做"呈现。

PS 在这里是一个链接,您可以将其保存为书签 (用鼠标右键单击"添加到收藏夹 … …"),将显示您生成的 DOM IE 看来 (丑 quoteLess = CaMelCaSeMeSS) 进行搜索以查找任何可能导致问题的离奇代码的结果。

IE 生成源: (将这作为任何书签的位置添加,编辑器不会让我连)

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

解决方法 3:

我有 这个 过去使用巨大的成功。您还可以查看 篇博客。

解决方法 4:

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

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

您使用它通过添加 AppSettingweb.config

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

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

~/Handlers/PersistantImage.ashx?key=UniqueImageName

解决方法 5:

它是如何处理在 IE 中的透明 Png 的"修复"。

我有这个同样的问题,与工作有关的网站 im,很快就发现没有有效的解决方案,它可以修复此问题和透明 PNG 图像。

解决方法 6:

这家伙有 IE6 缓存问题大篇,但博客似乎下来。

他煮问题分成两个部分:

  1. IE6 背景图像闪烁
  2. IE 错误/功能: 互联网浏览器缓存是不使用时运行的起始代码插入相同的图像多倍。微软建议两种很好的解决方法 (和对我来说,他们甚至没有工作),您也可以通过确保您这不插入的解决方法,但 <img> 通过起始标记。

问题 # 2 的天然解决方案是使用 background-image 而不是 <img> 标记; 不知不觉,这将强制您右转入问题 # 1 ; 因此,您可能击败问题 # 2,错误地认为就没有进步。

对我来说,我解决了这两个问题一次,当我换我 innerHTML <img> 标记与 <div> 有的标签 background-image 使用 document.execCommand("BackgroundImageCache", false, true) 来修复闪烁。

解决方法 7:

这篇文章已经很长时间,似乎仍有没有明确的解决方案。叹息 … … 不过,这是帮助其他人有相同的问题和如何也有人试图解决它的引用。

解决方法 8:

大部分时间我的项目的我找到了解决方法。

我使用 jQuery Fancybox 插件 几乎在每个项目。如果您正在使用 Fancybox 和 "x 剩余的项目" 问题在这里是解决方案:

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

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

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

只是修复 (有近 20 人) 的所有筛选器的路径,并将解决问题 !

我建议把相对路径的根,像这样:

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

解决方法 9:

通过执行以下固定这。这是黑客的攻击,但它的工作原理。

只需加载映像 body 标签后,只使用一个不可见的 IMG 标签。比如,

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

  ...
</body>

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

官方微信
官方QQ群
31647020