前端项目积累和总结——零碎知识(js)

继前篇《前端项目积累和总结——jQuery的extend()方法》,今篇只是简单地记录一下零碎的知识点

积累:(四)零碎知识(js)

1. 根据屏幕分辨率设置主界面的宽和高

//根据屏幕分辨率设置主界面的宽和高
var topH = window.outerHeight-window.innerHeight;//浏览器任务栏高度
function loadData(){
	var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
	var h, w; //主界面的宽和高
	var htop = topH; //浏览器任务栏高度
	//判断是否IE浏览器
	var isOpera = userAgent.indexOf("Opera") > -1;
	if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
		htop = topH -16;
	}
	//判断是否IE11浏览器
	else if(userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1){
		htop = topH -16;
	}
	h = window.screen.availHeight-5-htop;
	w = window.screen.availWidth-5;
    var oMain = document.getElementsByClassName("kiob-wrap");
	oMain[0].style.height = h+"px";
	oMain[0].style.width = w+"px";
}
setInterval("loadData()", 100);// 每隔0.1秒调用一次(解决浏览器页面突然拖到另外一个显示屏时及时刷新)

2. window.onload()函数

由于各个管理模块有不同的window.onload()函数,如果不处理,将只会指向最后一个,前面不执行。

解决:各个管理模块中的加载函数分别起个函数名,最后统一到一个window.onload()函数中。

注意:该window.onload()函数所在js文件应该置于最后(所调用函数的js文件之后)

window.onload = function(){
	loadData();
	initSocket();
	log_load();  
	...
}
3. ajax的回调函数使用function(),使用() =>虽然在Chrome浏览器下识别,但在ie浏览器上不识别。
loadXMLDoc('/user/enum', null, function() {
          ...
}

4. 阻止事件冒泡

项目中有多张表格talbe,要对选中行进行操作,同时在点击页面空白处时取消选中行。此时,用到了阻止事件冒泡。

(1)点击任一行,该点击事件只执行选中行功能,不执行上层元素的click事件(取消选中行)。

// 选中行变色  
$("tr", $(self)).click(function (e){
	e.stopPropagation();//阻止事件冒泡,不会触发上层click事件
	var trThis = this; 
	$(self).find(".trfocus").removeClass('trfocus');  
	$(trThis).addClass('trfocus');  
});  
(2)点击空白处,该点击事件只执行一次取消选中行功能,不执行上层元素的click事件( 取消选中行)。

$(obj).click(function(e){
	e.stopPropagation();//阻止事件冒泡,不会触发上层click事件
	var a=$("tbody").children();
	for(var i=0;i<a.length;i++){
		if($(a[i]).hasClass("trfocus")){
			$(a[i]).removeClass('trfocus');
		}
	}
});
5. jQuery移除属性removeAttr(),在ie浏览器下失效;可以用attr()来设置或移除属性(有时失效),但最好使用prop()。

$("#aco-check-all").prop("checked", true);//不能用attr()
$("#useradd-icon").prop("onclick", "");//移除click

后记:

感觉越来越好,每一次总结都有不一样的收获,这件事很值得,继续加油!!!










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值