月別アーカイブ: 2012年6月

IE8でpositionを使うときはtop(bottom)とleft(right)を両方指定しないとバグが起こるときがあるメモ


IE8でpositionを使うときはtop(bottom)とleft(right)を両方指定しないとバグが起こるときがあるので要注意。
大抵のブラウザでは未指定の場合はautoとなり0を指定したときと同じ状態になるが、
IE8でどちらか一方を指定し忘れると、もう一方の指定も無効化されてしまうことがあるので、
念のため両方指定しておいた方が安全な場合がある。

ol{
positon:relative;
}

li{
position:absolute;
top:-100px;
/*例えleftが0でも必ず指定しておく*/
left:0;
}

グローバル変数だらけのJavaScriptをひとつのグローバル変数にまとめる


今更だけど、グローバルスコープの競合を回避するために、
ひとつの変数にまとめるのも最適化の一つかと思う。

※ただし、一般的なサイトでむやみに取り入れると、
理解できるサイト運営スタッフが限られてしまい、
返って困ることになるかもしれないことや、
多少なりともスクリプトの負荷が高まる可能性はありそうなので、
なんでも最適化すればいいというものでもないと思う。

▼グローバル変数だらけのJavaScript

//グローバル変数だらけのJavaScript
var obj_x = 2;
var obj_y = 3;
var obj_xy = obj_x * obj_y;
function obj_sum(a){
	return a * obj_x * obj_y;
}

console.log('obj_x:' + obj_x);
console.log('obj_xy:' + obj_xy);
console.log('obj_sum(5):' + obj_sum(5));

↑どこからでもデータが呼べたり単純明快というメリットもある

▼グローバル変数をひとつにまとめたJavaScript

//グローバル変数をobjにまとめる
var obj = (function(){
	var data = {x:2, y:3};
	return {
		sum:function(a){return a * data.x * data.y},
		x:data.x,
		y:data.y,
		xy:data.x * data.y
	};
})();

console.log('obj.x:' + obj.x);
console.log('obj.xy:' + obj.xy);
console.log('obj.sum(5):' + obj.sum(5));