【发布时间】:2012-02-22 23:04:02
【问题描述】:
我正在使用以下javascript代码在移动网络浏览器(支持HTML5)中实现图像加载显示功能。 Image-loaded-show 表示在图片完全加载之前,宽高为0,即不显示,不占空间。
现在的问题是,在加载所有图像之前,图像不会显示。
我需要的是页面中的 iamge 是单独的,一旦加载,图像就会显示出来。
关于如何修改此 javascript 代码的任何提示?谢谢。
<script type='text/javascript'>
var srcs = [];
window.doBindLinks = function() {
var elems = document.getElementsByTagName('img');
for (var i = 0; i < elems.length; i++) {
var elem = elems[i];
var link = elem.getAttribute('src');
elem.setAttribute('link', link);
elem.removeAttribute('width');
elem.removeAttribute('height');
elem.removeAttribute('class');
elem.removeAttribute('style');
if(link.indexOf('.gif')>0)
{
elem.parentNode.removeChild(elem);
}else{
}
}
var content = document.getElementById('content');
var images = content.getElementsByTagName('img');
for (var i = 0; i < images.length; i++) {
srcs[i] = images[i].src;
loadImage(images[i], srcs[i],
function (cur, img, cached) {
cur.src = img.src;},
function (cur, img) {
cur.style.display = 'none';});
}
};
var loadImage = function (cur, url, callback, onerror) {
var img = new Image();
img.src = url;
img.width = '100%';
if (img.complete) {
callback && callback(cur, img, true);
return;
}
img.onload = function () {
callback && callback(cur, img, true);
return;
};
if (typeof onerror == 'function') {
img.onerror = function () {
onerror && onerror(cur, img);
}
}
};
</script>
页面源代码为:
<body onload="doBindLinks();"><div id="content"> images and text </div></body>
P.S: 因为我需要用 C# 编写这个 javascript 字符串,所以我将 (") 替换为 (')。
编辑: 以下是正确的:
window.doBindLinks = function() {
var elems = document.getElementsByTagName('img');
for (var i = 0; i < elems.length; i++) {
var elem = elems[i];
var link = elem.getAttribute('src');
elem.setAttribute('link', link);
elem.removeAttribute('width');
elem.removeAttribute('height');
elem.removeAttribute('class');
elem.removeAttribute('style');
elem.setAttribute('display','none');
if(link.indexOf('.gif')>0)
{
elem.parentNode.removeChild(elem);
}else{
}
elem.attachEvent('onload',onImageLoaded);
}
};
window.onImageLoaded = function() {
var elem = event.srcElement;
if ( elem != null ) {
elem.setAttribute('display','block');
}
return false;
};
另外,css代码是:
img {width: 100%; border-style:none;text-align:center;}
但图像在全部加载之前仍然不会显示。
【问题讨论】:
标签: javascript html css image mobile