「JavaScript高級プログラム設計」――DOM
7048 ワード
コードの理解は全部コメントに書いてあります.
8.js
8.js
/*
* BOM -
* - ( window )
* - window ( ) :
* - location :
* - navigator :
* - screen :
* - history :
*/
// , windows (windows )。
var age = 29;
function sayAge() {
console.log(this.age);
}
sayAge(); //29
window.sayAge(); //29
console.log(window.age == age); //true sayAge window 。
// : 。 window 。
var age = 29;
window.color = "red";
console.log(delete window.age); //false: , 。
console.log(delete window.color); //true: windows , 。
console.log(window.age); //29: 。
console.log(window.color); //undifined: 。
// : var [Configurable] false, 。
console.log(oldValue); // : 。
console.log(window.oldValue); //undefined: , 。
// window
// (frame.html) , , _(:3 」∠)_
/*
* window
* - : window.screenLeft/window.screenTop FireFox: window.ScreenX/window.ScreenY
* - : window.innerWidth/window.innerHeight/window.outerWidth/window.outerHeight
* - : window.resizeTo()/window.resizeBy()
* - : window.open()
*/
//
//IE,Safari,Opera,Chrome:screenLeft scrrenTop。
//FireFox: :ScreenX ScreenY
// :
var leftPos = (typeof window.screenLeft) == "numer"?
window.screenLeft:window.screenX;
var topPos = (typeof window.screenTop) == "number"?
window.screenTop:window.screenY;
console.log(leftPos+"..."+topPos); //"392...147" 。
console.log(parent == top); //true: ,parent top( )。
//IE,Opera: ( ,screenY )。
//Firefox,Safari,Chrome: ( ,screenY 0)。
//
// :innerWidth,innerHeight,outerWidth,outerHeight
//OuterWidth,OuterHeight:
//IE9+,Safari,Firefox: 。
//Opera: ( ) 。
//Opera ,innerWidth innerHeight ( ) 。
//Chrome ,inner outer : (viewport)
//
var pageWidth = window.innerWidth;
var pageHeight = window.innerHeight;
if(typeof pageWidth != "number") { // , ( )。
if(document.compatMode != "CSS1Compat") {
pageWidth = document.documentElement.clientWidth; // 。
pageHeight = document.documentElement.clientHeight;
} else {
pageWidth = document.body.clientWidth; // 。
pageHeight = document.body.clientHeight;
}
}
// ,window.innerWidth window.innerHeight 。
// , document.body.clientWidth document.body.clientHeight
// 。
//resizeTo() resizeBy()
// resizeTo() 。
//resizeBy() 。
window.resizeTo(100,100); // 100*100
window.resizeBy(100,150); // 200*250
window.resizeTo(300,300); // 300*300
// :
var wroxWin = window.open("http:///www.wrox.com/"); //
// : URL。
// : 。
// , 。
console.log(wroxWin.opener);
var wroxWin = window.open("http:///www.wrox.com/");
wroxWin.close(); // 。
console.log(wroxWin.closed); //true: 。
console.log(wroxWin.parent); //window 。
console.log(wroxWin.parent == wroxWin.top); //true
console.log(wroxWin.opener); //window
//opener , window (top) 。
// 。 , opener null
wroxWin.opener = null;
// , 。
// : 。
// :window.open null。
var wroxWin = window.open("http:///www.wrox.com/","_blank");
console.log(wroxWin == null); //false: 。
// , 。 try 。
var blocked = false; // 。
try{
var wroxWin = window.open("http:///www.wrox.com/","_blank");
blocked = true; // 。
}catch(e){
blocked = true; // 。
}
console.log(blocked);
/*
* : setTimeout
* setInterval
*/
//setTimeOut
setTimeout("console.log('executed');",1000); //executed
var id = setTimeout(function(){console.log("executed");},1000); //executed
// , 。
// , ( java Thread.sleep())
// ID
clearTimeout(id); //
// :setInterval
var num = 0;
var max = 10;
function inte() { // : 0 10
if(num==max)
clearInterval(id); // id
console.log(num++);
}
var id = setInterval(inte,1000);
// 。
var num = 0;
var max = 10;
function incrementNumber () {
num++;
if(num < max) { // , 。
setTimeout(incrementNumber,1000)
} else {
console.log("Done"); // : ID。
}
}
setTimeout(incrementNumber,1000);
// , 。
// :
//1. 。
//2. : , 。
//alert:
alert(" !"); //
//confirm: 。 。
var sure = confirm(" ?"); // boolean
if(sure) { // OK
alert(" 。");
} else { // cancel
alert(" , ");
}
//prompt: 。
var text = prompt(" 。");
if(text){ // 。
alert(" '"+text+"'!");
} else { // , null。
alert(" !");
}
//chrome: , , 。
var i = 0;
while(i<5) {
alert(" ");
i++;
}
alert(" "); // ,
confirm(" ");
prompt(" ");
// : ( )。
window.print();
window.find();
//location : 。
console.log(location.hash); //URL hash(# , )
console.log(location.host); //
console.log(location.hostname); //
console.log(location.href); //
console.log(location.pathname); //
console.log(location.port); //
console.log(location.protocol); //
console.log(location.search); //
// :
function getQueryStringArgs() {
var qs = (loaction.search.length > 0?
//
location.search.substring(1):"");
// "?" ,
var args = [];
var item = null;
var name = null;
var value = null;
var items = qs.length? qs.split("&"):[];
for(var i=0;i