`
accpxudajian
  • 浏览: 459815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

图片延迟加载(兼容IE&FF&Chrome)

阅读更多

经常看到京东,团购有图片延迟加载的使用,于是自己捉摸着实现了一个,仅供参考。

 

 

js代码部分:

/**
*图片延迟加载
*@param yourfun 处理图片的方法
*@param divID scroll绑定的容器的ID(默认是当期事件触发的控件,然后是document)
*
**/
function lazyload(yourfun,divID,offsetParentId){
	//构造全局变量:lazyImgs,格式为{arr:null,len:null};
	if(typeof(lazyImgs)=="undefined"){
		lazyImgs = {arr:null,len:null};
		lazyImgs.arr = document.getElementsByTagName("IMG");	//获取页面所有图片
		lazyImgs.len = lazyImgs.arr.length;
	}
	//顺序:指定ID的控件,然后是 当前事件触发的控件(先IE后Firefox),最后是 document
	var dom =document.getElementById(divID+"")||(window.event||{}).srcElement||getFFEvent().target||document.documentElement;
	var nOffsetHeight  = dom.offsetHeight+dom.scrollTop;
	var img;
	var offsetParent = null;
	var IEversion = 0;
	if(document.all){
		IEversion = parseInt((navigator.userAgent.split("MSIE")[1]).split(";")[0].replace(/ /,''));
	}
	var nTop = 0;
	for(var i=0;i<lazyImgs.len;i++){
		img = lazyImgs.arr[i];
		nTop = img.offsetTop;
		if(IEversion==7||IEversion==6){//IE67特殊处理。
			nTop = getIE7ImgOffset(img).offsetTop;
			//nTop = img.offsetParent.offsetParent.offsetParent.offsetTop;
		}
		//TODO +100是为了看到延迟效果,改成+0则会立即显示
		if(nTop+100 < nOffsetHeight){
			yourfun(img);
		}
	}
}

/* 获取FF下当前事件对象 */
function getFFEvent(){
	var func = EasyTip.getFFEvent.caller;
	while (func != null) {
		var arg0 = func.arguments[0];
		if (arg0) {
			if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
			   // top.JSLogger.log(arg0);
				return arg0;
			}
		}
		func = func.caller;
	}
	return func;
}
/*
*目的:IE7和IE6下,如果图片的容器(多半是DIV)的float等于left或者right,那么
*	自身的offsetTop等于相对于其父容器的高度,不是相对于body的高度,IE7、6如下处理。
*用户获取包裹img标签在IE7和IE6下的offset对象
*@param dom 一个dom对象(传递img对象或者其他dom对象)
*@return 从里向外找,返回第一个float为空的dom的父窗体。
***/
function getIE7ImgOffset(dom){
	var sFloat = dom.offsetParent.style["float"]||"";
	var bNext = ("left"==sFloat.toLowerCase() || "right"==sFloat.toLowerCase());
	while(bNext && (dom = dom.offsetParent)){
		sFloat = dom.style["float"]||"";
		bNext = ("left"==sFloat.toLowerCase() || "right"==sFloat.toLowerCase());
	}
	return dom;
}
//延迟图片的处理方法:重新加载并显示图片的src
function resetImg(img){
	if(!!img.getAttribute("file")){
		 img.setAttribute("src",img.getAttribute("file"));
		 img.removeAttribute("file");
	}
}

function onload(){
//使用图片LazyLoud
document.getElementById("content").style.height="500px";
   document.getElementById("content").onscroll= function(){
	   lazyload(resetImg,"content","1366content");
	};
}

 

 

附件是演示源码

 

 

 

 

 

 

愤怒的coder - 不断进取

 

 

 

  • 大小: 383.7 KB
分享到:
评论

相关推荐

    万能网页图片在线编辑器JS插件(兼容IE&FF)

    网页图片处理JS插件1.0 简单介绍:插件可以让用户用户可以在欣赏图片的同时,把看好的图片直接制作成自己喜欢的样式后通过QQ等传播。(支持:放大缩小、加文字、透明、闪图、叠图、加对话框等等,特别支持GIF动画。...

    [导入]Javascript获取IFrame内容(兼容IE&FF)

    在JavaScript编程中,有时我们需要获取Iframe(内联框架)中的内容,这在处理嵌套页面、跨域通信或者实现动态加载时非常常见。本文将详细介绍如何在各种浏览器,包括Internet Explorer(IE)和Firefox(FF)等主流...

    页面信息防盗(兼容ie&ff)

    你可以随心所欲地控制你页面的任何部分的内容被复制。---- javascrpt

    jsencrypt.js 兼容IE,Chrome,FF

    jsencrypt 兼容IE8,Chrome,FF,包括exports.default,Object.defineProperty不兼容问题处理等。

    JavaScript 瀑布流 吸顶 兼容IE FF Chrome

    实现JavaScript瀑布流兼容IE、Firefox和Chrome的方法包括: 1. 使用条件注释或者现代izr库来检测浏览器版本和特性。 2. 对于不支持CSS3 Flexbox或Grid的浏览器,可以使用JavaScript来计算和设置元素的样式,如宽度...

    JS图片预览(兼容IE6、IE7、IE8和FF)

    在Xiney ImagePreview项目中,可能包含了一个实现以上功能的JS库,包括预加载图片、处理事件和兼容旧版IE的代码。使用时,只需引入该库,并按照文档说明配置即可。通过分析这个库的源代码,我们可以学习到更多关于跨...

    兼容IE chrome FF 图片上传前预览

    这段代码是用于在图片上传前实现预览功能的,它兼容了Internet Explorer(IE)、Chrome 和 Firefox 这三种主流浏览器。在用户选择图片文件后,可以在网页上显示一个缩放后的预览图,确保预览图像的宽度和高度不超过...

    兼容ie,FF,chrome,opera的弹出层居中js

    标题“兼容ie,FF,chrome,opera的弹出层居中js”所指的就是一个JavaScript实现的弹出层(popup layer)定位代码,它能在Internet Explorer(IE)、Firefox(FF)、Chrome以及Opera这些主流浏览器中实现居中显示。...

    鼠标右键选中copy功能(IE&FF兼容)

    标题“鼠标右键选中copy功能(IE&FF兼容)”涉及到的是网页开发中关于鼠标右键功能的实现,特别是如何实现在Internet Explorer(IE)和Firefox(FF)这两种不同的浏览器中,用户通过右键选择复制(Copy)的功能。...

    js绘图类库(兼容IE/FF/chrome) web流程图、图表

    1、基于raphael2.0的绘图(内含大量...2、几乎兼容所有浏览器包括ie, firefox,chrome,opera, Safari 3、内含说明文档和演示代码,详见demo文件夹 4、可动态拖动图形(贝磁曲线、动态拾色器、图表、地图导航、流程图等)。

    java跨全域兼容ie/ff/chrome浏览器多文件上传(原创)

    本示例通过"java跨全域兼容ie/ff/chrome浏览器多文件上传(原创)"的标题,我们可以看出这是一个解决浏览器兼容性问题并实现跨域文件上传的解决方案。下面将详细解释这个主题涉及的关键知识点。 1. **跨域资源共享 ...

    TAB式导航栏的快捷实现(IE & FF)

    标题中的“TAB式导航栏的快捷实现(IE & FF)”是指在网页设计中,如何快速创建一个兼容Internet Explorer(IE)和Firefox(FF)浏览器的TAB式导航栏。这种导航栏通常用于网站页面,使用户能通过点击不同的标签页来...

    上传图片预览-兼容IE6,IE7,IE8,FF

    标题中的“上传图片预览-兼容IE6,IE7,IE8,FF”指的是一个Web开发的技术解决方案,目的是实现图片上传前的预览功能,并确保该功能在早期版本的Internet Explorer(IE6、IE7、IE8)以及Firefox浏览器上都能正常工作...

    [php]ifame仿ajax图片上传预览,兼容IE\FF\Chrome

    本项目 "[php]ifame仿ajax图片上传预览,兼容IE\FF\Chrome" 提供了一种利用iframe技术实现跨浏览器兼容的图片上传预览方案。以下是关于这个项目的一些关键知识点和详细说明: 1. **Iframe(内联框架)**:Iframe是一...

    网络拓扑图生成(js版 IE&FF兼容)

    /* * * 脚本名称:网络拓扑图 * * 脚本版本:v1.0 * ... * * 版权说明: * * 脚本版权归作者所有,仅供学习使用,如果用于商业用途请与作者联系(使用免费,但请告知), * 修改后版本请保留出处, 并把...

    推拉门式菜单-兼容ie,ff

    在本资源中,作者针对兼容性问题进行了优化,使得推拉门菜单可以在Internet Explorer(IE)和Firefox(FF)这两个主流浏览器上正常工作。 在Web开发中,由于不同浏览器对CSS、JavaScript等技术的解析和实现存在差异...

    css下拉菜单示例,兼容ie678,ff,chrome

    本示例主要关注的是使用CSS创建下拉菜单,并确保该菜单在不同的浏览器环境下,如IE6、IE7、IE8、Firefox和Chrome中都能正常工作。这是一项重要的任务,因为不同浏览器可能对CSS的解析和渲染存在差异,需要进行适当的...

    DIV+CSS 图片居中效果 兼容 IE FF。。等浏览器

    DIV+CSS 图片居中效果 兼容 IE FF。。等浏览器

    兼容ie和ff的页签

    在本案例中,"兼容ie和ff的页签"指的是一个JavaScript实现的页签功能,能够同时在Internet Explorer(IE)和Firefox(FF)这两个主流浏览器上正常工作。由于这两种浏览器对某些Web标准的实现存在差异,因此创建跨...

Global site tag (gtag.js) - Google Analytics