「javascript高級プログラム設計2」学習ノート8 BOM
7764 ワード
もっと読む
8.1 windowオブジェクト
BOMオブジェクトの核心はwindowで、ブラウザの一例を表しています.
ブラウザーの中で、windowはjavascriptがブラウザーの1つのインターフェイスを訪問するので、またECMAScriptの規定のglobalの対象です.
8.1.1グローバルスコープ
8.1.2ウィンドウ関係とフレームワーク
ページに枠が含まれている場合、各フレームには自分のwindowオブジェクトがあり、frame集合に保存されます.
window.frames[0]またはwindow.frames[frames Name]で参照できます.でもトップを使ったほうがいいです.
8.1.3ウィンドウの位置
moveTo() 新しい位置のxとy座標値を受信します.
新しい位置の水平方向および垂直方向に移動する画素値をmoveBy()が受信する.
注:ブラウザで無効になる場合があります.
フレームに合わないと、最外階のwindowオブジェクトにしか使えません.
8.1.4ウィンドウサイズ
新しいウィンドウと元のウィンドウの幅と高さの差を受信します.
注:ブラウザで無効になる場合があります.
フレームに合わないと、最外階のwindowオブジェクトにしか使えません.
8.1.5ナビゲーションとウィンドウを開く
window.open()close()メソッドを呼び出して、開いているウィンドウを閉じることができます.
wroxWin.close()
8.1.6間欠呼び出しとタイムアウト呼び出し
set Timeout()
clearTimeout()
set Interval()
clear Interval()
8.1.7システムダイアログ
alert() 文字列の表示を許可します.
confirm() 警告ダイアログでは、選択のキャンセル確認があります.
prompt() ヒントボックスで、テキストの入力をユーザに促す
8.2 locationオブジェクト
windowオブジェクトの属性であり、documentオブジェクトの属性でもあります. window.location==document.location
8.2.1クエリ文字列パラメータ
location.searchは疑問符からurlの最後までの内容を返します.各クエリ文字列パラメータには個別にアクセスできません.
8.2.2位置操作
一般的にはlocation.href()を使用します.
しかし、locations.hrefによってブラウザで新しいレコードが作成されますので、ユーザーが「後退」ボタンをクリックすると前のページに誘導されます.このような行為を無効にするには、locations.replace方法が使えます.
location.reload()//再読み込み(キャッシュから読み込む可能性があります.)
location.reload(true)//再読み込み(サーバから再読み込み)
reload()をコードの最後の行に置いたほうがいいです.
8.3ナビゲートオブジェクト
クライアントを識別するための事実基準
8.3.1検出プラグイン
非ie用plugis配列に含まれる属性
name:プラグイン名
description:プラグインの説明
filename:プラグインのファイル名
length:プラグインで処理されるMIMEタイプの数
8.3.2登録処理プログラム
FireFox 2.0はnavigatorのためにregister ContentHandlerとregister Protocol Handlerの方法を追加します.(この2つの方法はhttml 5で定義されています).特定のタイプの情報を処理することができることを、サイトに指定させることができる.
register ContentHandlerは、3つのパラメータを受け取ります.処理するMIMEタイプと、このMIMEタイプのページのURLとアプリケーションの名前を処理できます.
8.4 screenオブジェクト
用途はそんなに大きくないです.主にブラウザウィンドウの外部のディスプレイの情報を記憶します.ピクセル幅や高さなどです.各ブラウザのscreenオブジェクトにはそれぞれ異なる属性が含まれています.
8.5 history対象
用途はそんなに大きくないです.主にブラウザウィンドウの外部のディスプレイの情報を記憶します.ピクセル幅や高さなどです.各ブラウザのscreenオブジェクトにはそれぞれ異なる属性が含まれています.
8.1 windowオブジェクト
BOMオブジェクトの核心はwindowで、ブラウザの一例を表しています.
ブラウザーの中で、windowはjavascriptがブラウザーの1つのインターフェイスを訪問するので、またECMAScriptの規定のglobalの対象です.
8.1.1グローバルスコープ
8.1.2ウィンドウ関係とフレームワーク
ページに枠が含まれている場合、各フレームには自分のwindowオブジェクトがあり、frame集合に保存されます.
window.frames[0]またはwindow.frames[frames Name]で参照できます.でもトップを使ったほうがいいです.
8.1.3ウィンドウの位置
moveTo() 新しい位置のxとy座標値を受信します.
新しい位置の水平方向および垂直方向に移動する画素値をmoveBy()が受信する.
注:ブラウザで無効になる場合があります.
フレームに合わないと、最外階のwindowオブジェクトにしか使えません.
8.1.4ウィンドウサイズ
//
var pageWidth = window.innerWidth,
pageHeight = window.innerHeight;
if (typeof pageWidth != "number"){ // pageWidth
if (document.compatMode == "CSS1Compat"){ // , document.compatMode
pageWidth = document.documentElement.clientWidth;
pageHeight = document.documentElement.clientHeight;
} else {
pageWidth = document.body.clientWidth;
pageHeight = document.body.clientHeight;
}
}
alert("Width: " + pageWidth);
alert("Height: " + pageHeight);
risizett()ブラウザウィンドウの新しい幅と高さを受信する新しいウィンドウと元のウィンドウの幅と高さの差を受信します.
注:ブラウザで無効になる場合があります.
フレームに合わないと、最外階のwindowオブジェクトにしか使えません.
8.1.5ナビゲーションとウィンドウを開く
window.open()close()メソッドを呼び出して、開いているウィンドウを閉じることができます.
wroxWin.close()
8.1.6間欠呼び出しとタイムアウト呼び出し
set Timeout()
clearTimeout()
// ,
setTimeout("alert('Hello world!') ", 1000);
//
setTimeout(function() {
alert("Hello world!");
}, 1000);
//
var timeoutId = setTimeout(function() {
alert("Hello world!");
}, 1000);
//
clearTimeout(timeoutId);
set Interval()
clear Interval()
8.1.7システムダイアログ
alert() 文字列の表示を許可します.
confirm() 警告ダイアログでは、選択のキャンセル確認があります.
prompt() ヒントボックスで、テキストの入力をユーザに促す
8.2 locationオブジェクト
windowオブジェクトの属性であり、documentオブジェクトの属性でもあります. window.location==document.location
8.2.1クエリ文字列パラメータ
location.searchは疑問符からurlの最後までの内容を返します.各クエリ文字列パラメータには個別にアクセスできません.
function getQueryStringArgs(){
// ?
var qs = (location.search.length > 0 ? location.search.substring(1) : "");
//
var args = {};
//
var items = qs.split("&");
var item = null,
name = null,
value = null;
// args
for (var i=0; i < items.length; i++){
item = items[i].split("=");
name = decodeURIComponent(item[0]);
value = decodeURIComponent(item[1]);
args[name] = value;
}
return args;
}
// ?q=javascript&num=10
var args = getQueryStringArgs();
alert(args["q"]); //"javascript"
alert(args["num"]); //"10"
8.2.2位置操作
一般的にはlocation.href()を使用します.
しかし、locations.hrefによってブラウザで新しいレコードが作成されますので、ユーザーが「後退」ボタンをクリックすると前のページに誘導されます.このような行為を無効にするには、locations.replace方法が使えます.
location.reload()//再読み込み(キャッシュから読み込む可能性があります.)
location.reload(true)//再読み込み(サーバから再読み込み)
reload()をコードの最後の行に置いたほうがいいです.
8.3ナビゲートオブジェクト
クライアントを識別するための事実基準
8.3.1検出プラグイン
非ie用plugis配列に含まれる属性
name:プラグイン名
description:プラグインの説明
filename:プラグインのファイル名
length:プラグインで処理されるMIMEタイプの数
// , ie
function hasPlugin(name){ //
name = name.toLowerCase(); // ,
for (var i=0; i < navigator.plugins.length; i++){// plugins
if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){
// indexOf() name , name
return true;
}
}
return false;
}
// flash
alert(hasPlugin("Flash"));
// quicktime
alert(hasPlugin("QuickTime"));
// Java
alert(hasPlugin("Java"));
// ie
function hasIEPlugin(name){
try {
new ActiveXObject(name);
return true;
} catch (ex){
return false;
}
}
// flash
alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
// quicktime
alert(hasIEPlugin("QuickTime.QuickTime"));
プラグインごとに検出関数を作成します. // flash
function hasFlash(){
var result = hasPlugin("Flash");
if (!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
// quicktime
function hasQuickTime(){
var result = hasPlugin("QuickTime");
if (!result){
result = hasIEPlugin("QuickTime.QuickTime");
}
return result;
}
// flash
alert(hasFlash());
// quicktime
alert(hasQuickTime());
8.3.2登録処理プログラム
FireFox 2.0はnavigatorのためにregister ContentHandlerとregister Protocol Handlerの方法を追加します.(この2つの方法はhttml 5で定義されています).特定のタイプの情報を処理することができることを、サイトに指定させることができる.
register ContentHandlerは、3つのパラメータを受け取ります.処理するMIMEタイプと、このMIMEタイプのページのURLとアプリケーションの名前を処理できます.
8.4 screenオブジェクト
用途はそんなに大きくないです.主にブラウザウィンドウの外部のディスプレイの情報を記憶します.ピクセル幅や高さなどです.各ブラウザのscreenオブジェクトにはそれぞれ異なる属性が含まれています.
//
window.resizeTo(screen.availWidth, screen.availHeight);
8.5 history対象
用途はそんなに大きくないです.主にブラウザウィンドウの外部のディスプレイの情報を記憶します.ピクセル幅や高さなどです.各ブラウザのscreenオブジェクトにはそれぞれ異なる属性が含まれています.
history.go(-1) | history.back(); //
history.go(1) | history.forward();//
history.go(n);// n
history.go(‘baidu.com’);// baidu back() foward()
historyにはもう一つのlength属性があり、歴史記録の数が保存されています.もしhistory.lenghtが0に等しいなら、ユーザーがウィンドウを開けた後の最初のページであるべきです.