我有一个内部应用程序页面,显示使用Web服务从文档存储系统流式传输的文档图像.我遇到的问题是,当用户进行搜索时,他们可能会获得数百次点击,我必须在一个大页面上显示,这样他们就可以打印出来.这在Firefox中运行良好,但在IE中它会在一段时间后停止加载图像,所以我得到一百左右显示,其余的只有破碎的图像符号.我可以在某个地方更改此超时吗?
解决方法
如果问题确实是超时,您可以通过使用“延迟加载”脚本并仅在加载现有图像后向文档添加新图像来解决此问题.
有很多方法可以做到这一点,但这是一个简单的例子,我把它组合在一起并进行测试.而不是这个:
<img src="image001.jpg" /> <img src="image002.jpg" /> <img src="image003.jpg" /> <img src="image004.jpg" /> <!-- Etc etc etc -->
你可以这样做:
<div id="imgsGoHere"> </div> <script type="text/javascript"> function crossBrowserEventAttach(objectRef,eventName,functionRef) { try { objectRef.addEventListener(eventName,functionRef,false); } catch(err) { try { objectRef.attachEvent("on" + eventName,functionRef); } catch(err2) { // event attachment Failed } } } function addImageToPage() { var newImageElement = document.createElement("img"); newImageElement.src = imageArray[nextImageNumber]; var targetElement = document.getElementById("imgsGoHere"); targetElement.appendChild(newImageElement); nextImageNumber++; if (nextImageNumber < imageArray.length) { crossBrowserEventAttach(newImageElement,"load",addImageToPage); crossBrowserEventAttach(newImageElement,"error",addImageToPage); } } var nextImageNumber = 0; var imageArray = new Array(); imageArray[imageArray.length] = "image001.jpg"; imageArray[imageArray.length] = "image002.jpg"; imageArray[imageArray.length] = "image003.jpg"; // . // . // . // Snip hundreds of rows // . // . // . imageArray[imageArray.length] = "image999.jpg"; addImageToPage(); </script>
只有在上一个图像加载(或无法加载)后,每个图像才会添加到页面中.如果您的浏览器超时,我认为这将解决它.
当然,问题可能实际上不是超时,而是你的内存/系统资源不足而IE正在放弃.或者可能存在像Sra所说的IE DOM限制.