我有一个内部应用程序的页面,该页面显示使用web服务从文档存储系统流式传输的文档图像。我遇到的问题是,当用户进行搜索时,他们可能会得到数百个结果,我必须在一个大页面上显示这些结果,以便他们可以全部打印出来。这在Firefox中工作得很好,但在IE中,它会在一段时间后停止加载图像,所以我得到了100个左右的显示,其余的只是破碎的图像符号。有没有什么设置可以让我改变这个超时时间?
如果问题确实是超时,您可以通过使用"延迟加载"脚本并在现有图像加载后才向文档添加新图像来解决这个问题。
有很多方法可以做到这一点,但这里有一个简单的例子,我拼凑和测试。而不是:<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限制。
没有最终解决方案,但有一些提示…我想是Dom挂了电话。我在其他案例中也见过。我需要简单地显示图像,并使用一个js加载图像的时间,他们成为焦点,但如果你直接点击打印,我想工作。可以使用新的css功能直接存储图像数据而不是链接吗?这样你的问题就解决了。我不太确定,但是我想从ie 7
我的猜测是你必须围绕IE设置工作,最简单的方法就是简单地不显示未加载的图像或用默认图像替换它们:
html:<img src="http://domain.com/image.jpg" />
js :
$('img').load(function(){
// ... loaded
}).error(function(){
// ... not loaded, replace
$(this).attr('src','/whatever/default.jpg');
// ... not loaded, hide
$(this).hide();
});
这是微软的一个问题。不幸的是,这是一个必须在每台计算机上更改的设置,因为没有远程更改它的方法。要在计算机上更改它,请尝试打开regedit并添加 receievetimeout DWORD,其值为(#of minutes)*6000。希望这有帮助- codekid1001
编辑:对不起,我忘了输入文件路径:微软HKEY_CURRENT_USER Software Windows CurrentVersion InternetSettings
我使用类似的东西加载高清图片作为背景使用ASP页面
但是我使用jQuery来处理图像和它的加载。这是一张图片的示例,但是稍微调整一下就可以动态加载
myImage = new Image();
$(myImage).load(function ()
{
$(this).hide(); //Stops the loading effect of large images. can be removed
$('.csBackground li').append(this); //Append image to where you need it
$(myImage).show();
}).attr('src', settings.images[0]) //I pass an array from ASP code behind so 0 can be 'i'
.error( function { checkImages(); } ) //try and relaod the image or something?
因此,与其改变超时时间,不如尝试在错误时重新加载图像。
否则我只找到一个解决方案,是客户端特定的(HTTP超时)
http://support.microsoft.com/kb/813827