图片不能在网站上加载
Images not loading on website
我遇到的问题是,当页面加载时,有时它显示所有的图像,有时只有2个图像,有时所有。我不知道为什么会这样。
任何想法?
$('#banners .box img').each(function(index){
var randval = (index+1)*100;
var _this = $(this)
setTimeout(function(){
_this.attr('id' , 'banner' + index);
to_canvas('banner' + index, 300, 223);
}, randval)
});
to_canvas功能:
function to_canvas(im,w,h){
var canvas;
var imageBottom;
var im_w = w;
var im_h = h;
var imgData;
var pix;
var pixcount = 0;
var paintrow = 0;
var multiplyColor = [70, 116, 145];
var x_offset = Math.floor(($('#'+im).attr('width') - im_w)/2);
var y_offset = Math.floor(($('#'+im).attr('height') - im_h)/2);
imageBottom = document.getElementById(im);
canvas = document.createElement('canvas');
canvas.width = im_w;
canvas.height = im_h;
imageBottom.parentNode.insertBefore(canvas, imageBottom);
ctx = canvas.getContext('2d');
ctx.drawImage(imageBottom, -x_offset , -y_offset);
imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
pix = imgData.data;
for (var i = 0 ; i < pix.length; i += 4) {
if(pixcount > im_w - (im_h - paintrow) ){
pix[i ] = multiply(multiplyColor[0], pix[i ]);
pix[i+1] = multiply(multiplyColor[1], pix[i+1]);
pix[i+2] = multiply(multiplyColor[2], pix[i+2]);
}
if(pixcount < im_w-1){
pixcount++;
}else{
paintrow++;
pixcount = 0;
}
}
ctx.putImageData(imgData, 0, 0);
$('#'+im).remove();
}
function multiply(topValue, bottomValue){
return topValue * bottomValue / 255;
}
我使用画布函数添加一个三角形的正片叠底效果(像Photoshop)。
确保图片已加载:
$('#banners .box img').each(function(index, elem){
var randval = (index+1)*100,
self = this,
img = new Image(); // create image object
img.onload = function() { // wait until it's loaded
setTimeout(function(){
self.id = 'banner' + index;
to_canvas('banner' + index, 300, 223);
}, randval)
}
img.src = elem.src; // set source to same as elem
});
将其全部封装在此代码中,以确保在执行脚本之前加载图像。当您最初加载页面时,它会缓存图像(将它们存储在临时内存中),但不是在呈现所有元素之前。当您重新加载时,它会从缓存中读取图像——这比再次从服务器重新获取图像要快得多——因此,图像加载的时间与其他所有操作的加载时间大致相同。这将产生可见图像。
就像我说的,要让你的页面工作,确保所有东西都加载,然后运行你的脚本。
$(window).load(function(){
...your scripts(you can exclude functions definitions from this scope)
}
相关文章:
- 加载网站时出现随机图像
- 在桌面视图的iframe中加载网站
- 加载网站时显示弹出菜单一次
- 创建一个浏览器以在 ASP.NET 的网页中加载网站
- HTML5 音频自动播放仅适用于前 3 次访问/加载网站
- 如何在完成加载网站后加载谷歌广告
- 使用 PhantomJS 登录并加载网站,无需硬编码时间
- 如何在加载网站后使输入字段聚焦
- 在 chrome 上加载网站之前运行 JavaScript 代码段
- PHP 重新加载网站一次
- 如何在加载网站主页时加载模态对话框
- 加载网站内的外部页面
- 我在尝试从SQL服务器加载网站上的数据时遇到此错误
- 从服务器加载网站
- 如何使用jquery加载网站HTML
- 用原生移动字体而不是自定义字体加载网站的最佳方式
- 用HTML5视频循环预加载网站
- 在加载网站时访问浏览器下载的资产
- 加载网站并使用Javascript进行修改
- 通过浏览器返回按钮重新加载网站