1. 程式人生 > >瀏覽器、文件、滾動的寬高

瀏覽器、文件、滾動的寬高

BOM:瀏覽器物件模型

主要是為了解決視窗和視窗之間的通訊(互動)

window:BOM中的核心物件,建立的物件,變數都會自動成為window子物件,甚至於document也是window的子物件

1:獲取瀏覽器的寬和高(可視區域)(不包括工具欄和滾動條)

ie9以下不相容  

window.innerWidth

window.innerHeight;     

標準模式下,任意瀏覽器都相容
document.body.clientWidth,
document.body.clientHeight
 適用於怪異模式下的瀏覽器    沒有<!doctype html>
document.documentElement.clientWidth
document.documentElement.clientHeight

<!doctype html>

瀏覽器兩種渲染模式   怪異模式/混雜模式

// 可視區視窗寬高   (封裝函式getViewportOffset)
function getViewportOffset(){
	if(window.innerWidth){
		return {
			x:window.innerWidth,
			h:window.innerHeight
		}
	}else {
		if(document.compatMode=="BackCompat"){
			//document.compatMode=="BackCompat" //向後相容
			return {
				w:document.body.clientWidth,
				h:document.body.clientHeight
			}
		}else {
			return {
				w:document.documentElement.clientWidth,
				h:document.documentElement.clientHeight
			}
		}
	}
}
檢視滾動條  ie9以下不支援
window.pageYOffset
window.pageXOffset
 *************以下瀏覽器不相容,用時取兩個屬性值相加  ,因為不可能存在兩個同時有值
document.body.scrollTop
document.body.scrollLeft

document.documentElement.scrollTop
document.documentElement.scrollLeft
 // 檢視滾動條(封裝getScrollOffset()函式)
 function getScrollOffset() {
 	if(window.pageXOffset){
 		return {
 			x:window.pageXOffset,
 			y:window.pageYOffset
 		}
 	}else{
 		return {  //瀏覽器不相容,用時取兩個屬性值相加 ,因為不可能存在兩個同時有值
 			x:document.body.scrollLeft+document.documentElement.scrollLeft,
 			y:document.body.scrollTop+document.documentElement.scrollTop
 		}
 	}
 } 
//文件的高度  寬度
document.body.scrollWidth
document.body.scrollHeight


document.documentElement.scrollWidth
document.documentElement.scrollHeight
//文件的高度  寬度  (封裝getScrollHeight()函式)
function getScrollHeight(){
	  if(document.body.scrollWidth){
		return {
			w:document.body.scrollWidth,
			h:document.body.scrollHeight
		}
	}else {
		return {
			w: document.documentElement.scrollWidth,
			h: document.documentElement.scrollHeight
		}
	}
}

//封裝insertAfter  功能類似insertBefore
    Element.prototype.insertAfter = function (targetNode, afterNode) {
        var beforeNode = afterNode.nextElementSibling;
        if (beforeNode == null) {
            this.appendChild(targetNode);
        } else {
            this.insertBefore(targetNode, beforeNode);
        }
    }