Window( Frame )の幅の取得
function getWindowWidth(){
if(window.innerWidth) return window.innerWidth; // Mozilla, Opera, NN4
if(document.documentElement && document.documentElement.clientWidth){ // 以下 IE
return document.documentElement.clientWidth;
}
else if(document.body && document.body.clientWidth){
return document.body.clientWidth;
}
return 0;
}
|
Window( Frame )の高さの取得
function getWindowHeight(){
if(window.innerHeight) return window.innerHeight; // Mozilla, Opera, NN4
if(document.documentElement && document.documentElement.clientHeight){ // 以下 IE
return document.documentElement.clientHeight;
}
else if(document.body && document.body.clientHeight){
return document.body.clientHeight;
}
return 0;
}
|
Window( Frame )のスクリーン上の位置(X座標)
function getWinXOffset(){
if(window.scrollX) return window.scrollX; // Moziila
if(window.pageXOffset) return window.pageXOffset; // Opera, NN4
if(document.documentElement && document.documentElement.scrollLeft){ // 以下 IE
return document.documentElement.scrollLeft;
}
else if(document.body && document.body.scrollLeft){
return document.body.scrollLeft;
}
return 0;
}
|
Window( Frame )のスクリーン上の位置(Y座標)
function getWinYOffset(){
if(window.scrollY) return window.scrollY; // Mozilla
if(window.pageYOffset) return window.pageYOffset; // Opera, NN4
if(document.documentElement && document.documentElement.scrollTop){ // 以下 IE
return document.documentElement.scrollTop;
}
else if(document.body && document.body.scrollTop){
return document.body.scrollTop;
}
return 0;
}
|
レイヤ名からレイヤオブジェクトを得る
function getDivFromName(nm){
// IE5+, Mozilla, Opera
if(document.getElementById) return document.getElementById(nm);
if(document.all) return document.all(nm); // IE4
if(document.layers){ // NN4
var s='';
for(var i=1; i<arguments.length; i++)
s+='document.layers.'+arguments[i]+'.';
return eval(s+'document.layers.'+nm);
}
return null;
}
|
レイヤを生成する // Opera 7以上
_createLayerNo = 0; // レイア生成番号
function createLayer(left,top,width,height,parentDiv){
var div=null;
if(document.layers){ // NN4
div=parentDiv?(new Layer(width,parentDiv)):(new Layer(width));
if(height>0) div.clip.height =height;
div.moveTo(left,top);
}
if(document.body){
var pDiv,txt,divName='_js_layer_'+_createLayerNo;
_createLayerNo++;
pDiv=parentDiv?parentDiv:document.body;
var h=(height>0)?(height+'px'):'';
var w=(width>0)? (width+'px'):!document.getElementById?';width:1':'';
txt='<div id="'+divName+
'" style="position:absolute; left:'+left+'px; top:'+top+
'px;'+' width:'+w+'; height:'+h+'; visibility:hidden;"><\/div>';
if(document.body.insertAdjacentHTML){ // IE, Opera
pDiv.insertAdjacentHTML('BeforeEnd',txt);
div=document.getElementById?
document.getElementById(divName):(document.all?document.all(divName):null);
}
else if(document.createElement && document.body.appendChild &&
document.body.style){ // Mozilla
pDiv.appendChild(div=document.createElement('DIV'));
div.id=divName;
div.style.position = 'absolute';
if(w!='') div.style.width = w;
if(h!='') div.style.height= h;
div.style.left=left+'px';
div.style.top =top+'px';
div.style.visibility='hidden';
}
else if(document.body.innerHTML){ // others
pDiv.innerHTML+=txt;
div=document.getElementById?
document.getElementById(divName):(document.all?document.all(divName):null);
}
}
return div;
}
|
外部参照レイアを生成する // Opera 7以上
_createLayerNo = 0; // レイア生成番号
function createExLayer(url,left,top,width,height,parentDiv){
var div=null;
if(document.layers){ // NN4
var div=parentDiv?(new Layer(width,parentDiv)):(new Layer(width));
if(height>0) div.clip.height =height;
div.moveTo(left,top);
div.load(url,width);
}
if(document.body){
var pDiv,txt,divName = '_js_layer_'+_createLayerNo;
_createLayerNo++;
pDiv=parentDiv?parentDiv:document.body;
txt='<div id="'+divName
+'" style="position:absolute;left:'+left+'px; top:'+top
+'px; width:'+width+'px; height:'+((height>0)?height+'px':'')
+'; visibility:hidden;">'
+'<iframe src="'+url+'" name="'+divName+'_if" '
+'width="'+width+'" height="'+height
+'" marginwidth="0" marginheight="0" '
+'scrolling="no" frameborder="0">'
+'<\/iframe>'
+'<\/div>';
if(document.body.insertAdjacentHTML){ // IE, Opera
pDiv.insertAdjacentHTML('BeforeEnd',txt);
div=document.getElementById?
document.getElementById(divName):(document.all?document.all(divName):null);
}
else if(document.createElement && document.body.appendChild &&
document.body.style){ // Mozilla
div=document.createElement('IFRAME');
div.id=divName;
div.name=divName;
div.style.position = 'absolute';
div.style.width = width+'px';
div.style.height= height+'px';
div.style.left=left+'px';
div.style.top =top+'px';
div.style.visibility='hidden';
div.src=url;
if(div.setAttribute){
div.setAttribute('frameborder',0);
div.setAttribute('scrolling','no');
}
pDiv.appendChild(div);
}
else if(document.body.innerHTML) { // others
pDiv.innerHTML+=txt;
div=document.getElementById?
document.getElementById(divName):(document.all?document.all(divName):null);
}
}
return div;
}
|
外部参照レイアに表示中のドキュメントサイズ(高さ)の取得 // Opera 7以上
function getExlHeight(exdiv){
if(document.layers) return exdiv.document.height; // NN4
if(exdiv.contentDocument && exdiv.contentDocument.body.offsetHeight)
return exdiv.contentDocument.body.offsetHeight; // Mozilla
// 以下、IE, Opera
if(frames[exdiv.id+'_if']&& frames[exdiv.id+'_if'].document &&
frames[exdiv.id+'_if'].document.body.scrollHeight)
return frames[exdiv.id+'_if'].document.body.scrollHeight;
if(frames(exdiv.id+'_if')&& frames(exdiv.id+'_if').document &&
frames(exdiv.id+'_if').document.body.scrollHeight)
return frames(exdiv.id+'_if').document.body.scrollHeight;
return 0;
}
|
外部参照レイア内のドキュメントの縦方向へのスクロール // Opera 7以上
function scrollExlVItTo(exdiv,y){
if(document.layers){ // NN4
var dy=y-exdiv.clip.top, ch=exdiv.clip.height;
exdiv.top-=dy;
exdiv.clip.top=y; exdiv.clip.height=ch;
}
else if(frames[exdiv.id] && frames[exdiv.id].scrollTo) // Mozilla
frames[exdiv.id].scrollTo(0,y);
// 以下、IE, Opera
else if(frames[exdiv.id+'_if'] && frames[exdiv.id+'_if'].scrollTo)
frames[exdiv.id+'_if'].scrollTo(0,y);
else if(frames(exdiv.id+'_if') && frames(exdiv.id+'_if').scrollTo)
frames(exdiv.id+'_if').scrollTo(0,y);
return;
}
|
レイア内の IMAGEオブジェクトの取得
function getDivImage(div,imgName){
// IE5+, Mozilla, Opera
if(document.getElementById) return document.getElementById(imgName);
if(div.document.images[imgName]) return div.document.images[imgName]; // NN4
if(document.images(imgName)) return document.images(imgName); // IE4
return null;
}
|
レイヤの位置の初期化
/* 現在の NN6(Mozilla)にはバグがあり、X座標についてはうまく初期化できない
事があります。(このバグは、NN6.1あたりでは修正されています。)*/
function initDivPos(div){
if(document.layers) return;
// IE5+, Mozilla, Opera 7
if(typeof div.style.left!="undefined"&& typeof div.style.left=="string"){
div.style.left=div.offsetLeft+'px';
div.style.top =div.offsetTop +'px';
}
else if(typeof div.style.pixelLeft!="undefined"){ // IE4, Opera 6
div.style.pixelLeft=div.offsetLeft;
div.style.pixelTop =div.offsetTop;
}
}
|
レイヤの位置(X軸方向)の取得
/* NN6+(Mozilla)の場合、バグがあるので、それを考慮する場合は
div.offsetTop のかわりに parseInt(div.style.top)を使い
紫色のコード部分を追加します。
ただし、このバグは、NN6.1あたりでは修正されています。*/
function getDivLeft(div){
if(typeof window.crypto!="undefined" &&
typeof window.getComputedStyle!="undefined"){ // Mozilla
return parseInt(div.style.left);
}
else // IE, (Mozilla), Opera, NN4
return document.layers?div.left:(div.offsetLeft||div.style.pixelLeft||0);
} |
レイヤの位置(Y軸方向)の取得
/* getDivLeft関数と同様、紫色のコード部分を追加します。*/
function getDivTop(div){
if(typeof window.crypto!="undefined" &&
typeof window.getComputedStyle!="undefined"){ // Mozilla
return parseInt(div.style.top);
}
else // IE, (Mozilla), Opera, NN4
return document.layers?div.top:(div.offsetTop||div.style.pixelTop||0);
}
|
レイヤを絶対値で移動する
function moveDivTo(div,left,top){
if(document.layers){ div.moveTo(left,top); return; } // NN4
// IE5+, Mozilla, Opera 7
if(typeof div.style.left!="undefined"&& typeof div.style.left=="string"){
div.style.left=left+'px';
div.style.top =top +'px';
}
else if(typeof div.style.pixelLeft!="undefined"){ // IE4, Opera 6
div.style.pixelLeft=left;
div.style.pixelTop =top;
}
}
|
レイヤを相対値で移動する
/* 現在のNN6(Mozilla)にはバグがあり、div.offsetLeftやdiv.offsetTopの代わりに parseInt(div.style.left)及び parseInt(div.style.top)を使う必要が
あります。NN6のバグを考慮する場合は、紫色のコード部分を追加します。
ただし、このバグは、NN6.1あたりでは修正されています。*/
function moveDivBy(div,left,top){
if(document.layers){ div.moveBy(left,top); return; } // NN4
if(typeof window.crypto!="undefined" &&
typeof window.getComputedStyle!="undefined"){ // Mozilla
div.style.left=(parseInt(div.style.left)+Math.round(left))+'px';
div.style.top =(parseInt(div.style.top) +Math.round(top) )+'px';
return;
}
// IE5+, (Mozilla), Opera
if(typeof div.style.left!="undefined"&& typeof div.style.left=="string"){
div.style.left=(div.offsetLeft+Math.round(left))+'px';
div.style.top =(div.offsetTop +Math.round(top) )+'px';
return;
}
// IE4
if(typeof div.style.pixelLeft!="undefined"){
div.style.pixelLeft+=Math.round(left);
div.style.pixelTop +=Math.round(top);
return;
}
}
|
レイヤのサイズの初期化
function initDivSize(div){
if(document.layers) return;
// IE5+, Mozilla, Opera 7
if(typeof div.style.width!="undefined"&& typeof div.style.width=="string"){
div.style.width =div.offsetWidth +'px';
div.style.height=div.offsetHeight+'px';
}
else if(typeof div.style.pixelWidth!="undefined"){ // IE4, Opera 6
div.style.pixelWidth =div.offsetWidth;
div.style.pixelHeight=div.offsetHeight;
}
}
|
レイヤのサイズ(幅)の取得
function getDivWidth (div){
return document.layers?
div.clip.width:(div.offsetWidth||div.style.pixelWidth||0);
}
|
レイヤのサイズ(高さ)の取得
function getDivHeight(div){
return document.layers?
div.clip.height:(div.offsetHeight||div.style.pixelHeight||0);
}
|
レイヤのサイズを絶対値で設定する
function resizeDivTo(div,width,height){
if(document.layers) { // NN4
div.resizeTo(width,height);
}
// IE5+, Mozilla, Opera 7
else if(typeof div.style.width!="undefined"&& typeof div.style.width=="string"){
div.style.width =width +'px';
div.style.height=height+'px';
}
else if(typeof div.style.pixelWidth!="undefined"){ // IE4, Opera 6
div.style.pixelWidth = width;
div.style.pixelHeight = height;
}
}
|
レイヤのサイズを相対置で設定する
function resizeDivBy(div,width,height){
if(document.layers) { // NN4
div.resizeBy(width,height);
}
// IE5+, Mozilla, Opera 7
else if(typeof div.style.width!="undefined"&& typeof div.style.width=="string"){
div.style.width =(div.offsetWidth +Math.round(width))+'px';
div.style.height=(div.offsetHeight+Math.round(height))+'px';
}
else if(typeof div.style.pixelWidth!="undefined"){ // IE4, Opera 6
div.style.pixelWidth +=Math.round(width);
div.style.pixelHeight+=Math.round(height);
}
}
|
レイヤの表示/非表示の設定
function setDivVisibility(div,visible){
(div.style||div).visibility=(visible)?
((window.opera && !document.documentElement)?'visible':'inherit'):'hidden';
}
|
レイヤの表示領域のクリッピング // Opera 7以上
function setDivClip(div,top,right,bottom,left){
if(document.layers){ // NN4
div.clip.top =top; div.clip.right=right;
div.clip.bottom=bottom;div.clip.left =left;
}
else if(typeof div.style.clip!="undefined"){ // IE, Mozilla, Opera
div.style.clip=
'rect('+top+'px '+right+'px '+bottom+'px '+left+'px)';
}
}
|
レイヤに HTMLを書く // Opera 7以上
function writeDivHTML(div,html){
if(document.layers){ // NN4
div.document.open();
div.document.write(html);
div.document.close();
}
else if(typeof div.innerHTML!="undefined"){ // IE, Mozilla, Opera
div.innerHTML=html;
}
}
|
レイヤの背景色を設定する
function setDivBackgroundColor(div,color){
if(document.layers){ // NN4
div.bgColor=(color=='transparent')?null:color;
}
else if(typeof div.style.backgroundColor!="undefined"){ // IE, Mozilla, Opera
div.style.backgroundColor=(color==null)?'transparent':color;
}
}
|
レイヤの背景画像を設定する
function setDivBackgroundImage(div,url){
if(document.layers){ // NN4
div.background.src=url;
}
else if(typeof div.style.backgroundColor!="undefined"){ // IE, Mozilla, Opera
div.style.backgroundImage='url('+url+')';
}
}
|
レイヤの重なる順序の設定
function setDivZIndex(div,order){
(div.style||div).zIndex=order;
}
|
イベント発生時のドキュメント上の座標(X座標)
function getEventPageX(e){
if(!e) var e = window.event;
if(window.opera){ // Opera
return (document.documentElement?window.pageXOffset:0)+e.clientX;
}
else if(e.pageX) return e.pageX; // Mozilla, NN4, Safari
else if(e.clientX){ // IE, others
var sl=0;
if(document.documentElement && document.documentElement.scrollLeft)
sl=document.documentElement.scrollLeft;
else if(document.body && document.body.scrollLeft)
sl=document.body.scrollLeft;
else if(window.scrollX||window.pageXOffset)
sl=(window.scrollX||window.pageXOffset);
return sl+e.clientX;
}
return 0;
}
|
イベント発生時のドキュメント上の座標(Y座標)
function getEventPageY(e){
if(!e) var e = window.event;
if(window.opera){ // Opera
return (document.documentElement?window.pageYOffset:0)+e.clientY;
}
else if(e.pageY) return e.pageY; // Mozilla, NN4, Safari
else if(e.clientY){ // IE, others
var st=0;
if(document.documentElement && document.documentElement.scrollTop)
st=document.documentElement.scrollTop;
else if(document.body && document.body.scrollTop)
st=document.body.scrollTop;
else if(window.scrollY||window.pageYOffset)
st=(window.scrollY||window.pageYOffset);
return st+e.clientY;
}
return 0;
}
|