成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS學(xué)習(xí)筆記(第8章)(BOM)

Cruise_Chan / 799人閱讀

摘要:間歇調(diào)用和超時(shí)調(diào)用超時(shí)調(diào)用表示在指定時(shí)間后執(zhí)行代碼要執(zhí)行的代碼,以毫秒表示的時(shí)間超時(shí)調(diào)用注意經(jīng)過一定時(shí)間后改代碼也不一定執(zhí)行,因?yàn)槭且粋€(gè)單線程解釋器,任務(wù)會(huì)按照隊(duì)列執(zhí)行,經(jīng)過該時(shí)間將任務(wù)添加到隊(duì)列中。

1、window對(duì)象

BOM的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。window既是通過Javascript訪問瀏覽器窗口的一個(gè)接口,又是ECMAScript規(guī)定的Global對(duì)象。

1.1 全局作用域

所有在全局作用域中聲明的變量、函數(shù)都會(huì)變成window對(duì)象的屬性和方法;

(1) 定義全局變量與在window對(duì)象上直接定義屬性的區(qū)別在于:全局變量不能通過delect操作符刪除,而直接在window對(duì)象上定義的屬性可以。

var age = 29;
window.color = "red";
delect window.age;     //報(bào)錯(cuò)
delect window.color;   //true

原因在于使用var語句添加的window屬性有一個(gè)名為[[Configurable]]的特性,這個(gè)特性的值被設(shè)置為false,因此這樣定義的屬性不可以通過delectable操作符刪除。

(2) 嘗試訪問未聲明的變量會(huì)拋出錯(cuò)誤,但是通過查詢window對(duì)象,可以知道某個(gè)可能未聲明的變量是否存在。

var newValue = olaValue;             //這里會(huì)報(bào)錯(cuò),因?yàn)閛ldValue未定義
var newValue = window.oldValue;      //這里不會(huì)報(bào)錯(cuò),因?yàn)檫@是一次屬性查詢
1.2 窗口關(guān)系及框架

如果頁面中包含框架,則每個(gè)框架都擁有自己的window對(duì)象,并且保存在frames集合中。在frames集合中,可以通過數(shù)值索引(從0開始,從左至右,從上到下)或者框架名稱來訪問相應(yīng)的window對(duì)象。每個(gè)window對(duì)象都有一個(gè)name屬性,其中包含框架的名稱。

top對(duì)象始終指向最高(最外)層的框架,也就是瀏覽器窗口;

parent(父)對(duì)象始終指向當(dāng)前框架的直接上層框架;
[在某些情況下,parent有可能等于top;但在沒有框架的情況下,parent一定等于top(此時(shí)它們都等于window)]

self對(duì)象始終指向window;

所有這些對(duì)象都是window對(duì)象的屬性,可以通過window.parent、window.top等形式來訪問;

1.3 窗口位置

screenLeft屬性、screenTop屬性:分別用于表示窗口相對(duì)于屏幕左邊和上邊的位置;(IE、Safiari、Opera、Chrome)

screenX屬性、screenY屬性:分別用于表示窗口相對(duì)于屏幕左邊和上邊的位置;(Firefox、Safari、Chrome)

moveTo()方法、moveBy()方法:將窗口精確地移動(dòng)到一個(gè)新位置,moveTo()接收的是新位置的x和y坐標(biāo)值,moveBy()接收的是在水平和垂直方向上移動(dòng)的像素?cái)?shù)。

    window.moveBy(0,100);        //將窗口向下移動(dòng)100像素
    window.moveTo(200,300);      //將窗口移動(dòng)到(200,300)
1.4 窗口大小

(1)四個(gè)屬性:innerWidth、innerHeight、outerWidth、outerHeight

在IE9+、Safari和Firefox中,outerWidth和outerHeight返回瀏覽器窗口本身的尺寸(無論是從最外層的window對(duì)象還是從某個(gè)框架訪問);

在Opera中,outerWidth和outerHeight表示頁面視圖容器(單個(gè)標(biāo)簽頁對(duì)應(yīng)的瀏覽器窗口)的大小;innerWidth和innerHeight則表示該容器中頁面視圖區(qū)的大小(減去邊框?qū)挾龋?/p>

在Chrome中,outerWidth、outerHeight和innerWidth、innerHeight返回相同的值,即視口大小而非瀏覽器窗口大小

(2)取得視口大小

在IE、Safari、Firefox、Safari、Opera和Chrome中,document.documentElement.clientWidth document.documentElement.clientHeight中保存了頁面視口的信息;

在IE6中,這些屬性必須在標(biāo)準(zhǔn)模式下有效;如果是混雜模式,則需通過document.body.clientWidth和document.body.clientHeight取得相同信息;

在混雜模式的Chrome中,均可使用。例:無法確定瀏覽器窗口本身大小,但卻可取得頁面視口的大小

var pageWidth=window.innerWidth,
    pageHeight=window.innerHeight;
if(typeof pageWidth !="number"){
    if(document.compatMode=="CSS1Compat"){  //通過檢查document.compatMode來確定頁面是否處于標(biāo)準(zhǔn)模式
        pageWidth=document.documentElement.clientWidth;
        pageHeight=document.documentElement.clientHeight
    }
    else{
        pageWidth=document.body.clientWidth;
        pageHeight=document.body.clientHeight;
    }
}

(3)調(diào)整瀏覽器窗口大小

resizeTo():接收兩個(gè)參數(shù),接收瀏覽器窗口的新寬度和新高度

resizeBy():接收兩個(gè)參數(shù),接收新窗口與原窗口的寬度和高度之差

   window.resiazeTo(100,100);    //調(diào)整到100*100
   window.resizeBy(100,50);      //調(diào)整到100*150
1.5 導(dǎo)航和打開窗口

window.open() 這個(gè)方法通??梢越邮账膫€(gè)參數(shù):要加載的URL、窗口目標(biāo)一個(gè)特性字符串以及一個(gè)表示新頁面是否取代瀏覽器歷史記錄中當(dāng)前加載頁面的布爾值。

通常只需傳遞第一個(gè)參數(shù),最后一個(gè)參數(shù)只在不打開窗新窗口的情況下使用;

如果傳遞了第二個(gè)參數(shù),而且該參數(shù)是已有窗口或框架的名稱,那么就會(huì)在具有該名稱的窗口或框架中加載第一個(gè)參數(shù)指定的URL;第二個(gè)參數(shù)也可以是任何一個(gè)特殊的窗口名稱,如_self、_parent、_top、_blank;

如果給window.open()傳遞的第二個(gè)參數(shù)并不是一個(gè)已經(jīng)存在的窗口或框架,那么該方法就會(huì)根據(jù)在第三個(gè)參數(shù)位置上傳入的字符串創(chuàng)建一個(gè)新窗口或新標(biāo)簽頁。

調(diào)用close()方法還可以關(guān)閉新打開的窗口,這個(gè)方法僅適用于通過window.open()打開的彈出窗口;
新創(chuàng)建的window對(duì)象有一個(gè)opener屬性,其中保存著打開它的原始窗口對(duì)象。這個(gè)屬性只在彈出窗口中的最外層window對(duì)象(top)中有定義。將新創(chuàng)建的變遷也的opener屬性設(shè)置為null,即表示在多帶帶的進(jìn)程中運(yùn)行新標(biāo)簽頁。

1.6 間歇調(diào)用和超時(shí)調(diào)用

超時(shí)調(diào)用:表示在指定時(shí)間后執(zhí)行代碼 setTimeout(要執(zhí)行的代碼,以毫秒表示的時(shí)間)、clearTimeout(超時(shí)調(diào)用ID)
注意:經(jīng)過一定時(shí)間后改代碼也不一定執(zhí)行,因?yàn)镴S是一個(gè)單線程解釋器,任務(wù)會(huì)按照隊(duì)列執(zhí)行,經(jīng)過該時(shí)間將任務(wù)添加到隊(duì)列中。如果隊(duì)列為空,添加的代碼就會(huì)立即執(zhí)行,否則就要等前面的代碼執(zhí)行完了以后再執(zhí)行
間歇調(diào)用:表示每隔指定的時(shí)間就執(zhí)行一次代碼 setINterval(要執(zhí)行的代碼,以毫秒表示的時(shí)間)、clearInterval(間歇調(diào)用ID)

//設(shè)置超時(shí)調(diào)用
var  timeoutId = setTimeout(function() {
    alert("Hello World");
},1000);
//取消
clearTimeout(timeoutId);


//設(shè)置間歇調(diào)用
var  timeintervalId = setTimeout(function() {
    alert("Hello World");
},1000);
//取消
clearTimeout(timeintervalId);

在開發(fā)環(huán)境下,很少使用真正的間隙調(diào)用,原因是后一個(gè)間歇調(diào)用可能會(huì)在前一個(gè)間歇調(diào)用結(jié)束之前啟動(dòng)。因此一般認(rèn)為使用超時(shí)調(diào)用來模擬間歇調(diào)用是一種最佳模式。如下,是采用超時(shí)調(diào)用模擬一個(gè)間歇調(diào)用。

//間歇調(diào)用
var num = 0;
var max = 10;
var intervalId = null; 
function incrementNumber() {
    num++;       
    //如果執(zhí)行次數(shù)達(dá)到了max設(shè)定的值,則取消后續(xù)尚未執(zhí)行的調(diào)用
    if(num == max) {
        clearInterval(intervalId);
        alert("Done");
    }
}
intervalId = setInterval(incrementNumber, 500);


//超時(shí)調(diào)用模擬間歇調(diào)用
var num = 0;
var max = 10;
var intervalId = null;
function incrementNumber() {
    num++;
    //如果執(zhí)行次數(shù)達(dá)到了max設(shè)定的值,則取消后續(xù)尚未執(zhí)行的調(diào)用
    if(num < max) {
       setTimeout(incrementNumber, 500);
    }else{
        alert("Done");
    }
}
setTimeout(incrementNumber, 500);
1.7 系統(tǒng)對(duì)話框
alert();
confirm();
prompt(要顯示給用戶的提示,文本輸入域的默認(rèn)值);
//顯示“打印”對(duì)話框
window.print();
//顯示“查找”對(duì)話框
window.find();
2、location對(duì)象 2.1 查詢字符串參數(shù)

function getQueryStringArgs() {
    //取得查詢字符串并去掉開頭的問號(hào)
    var qs = (location.search.length>0 ? location.search.substring(1) : ""),
    //保存數(shù)據(jù)的對(duì)象
    args = {},
    //取得每一項(xiàng)
    items = qs.length ? qs.split("&") : [],
    item = null,
        name = null,
        value = null,
        //在for循環(huán)中使用
        i = 0,
        len = items.length;
    //逐個(gè)將每一項(xiàng)添加到agrs對(duì)象中去
    for(i=0; i
2.2 位置操作

P208

replace(要導(dǎo)航到的URL),在調(diào)用replace()方法之后,用戶不能會(huì)發(fā)哦前一個(gè)界面;
reload()作用是重新加載當(dāng)前顯示的界面。
location.reload(); //重新加載(有可能從緩存中加載)
location.reload(true); //重新加載(從服務(wù)器重新加載)

3、navigator對(duì)象

Navigator 對(duì)象包含有關(guān)瀏覽器的信息。通常用于檢測(cè)顯示網(wǎng)頁的瀏覽器類型。

4、screen對(duì)象

Screen 對(duì)象包含有關(guān)客戶端顯示屏幕的信息。

5、history對(duì)象

History 對(duì)象包含用戶(在瀏覽器窗口中)訪問過的 URL。History 對(duì)象是 window 對(duì)象的一部分,可通過 window.history 屬性對(duì)其進(jìn)行訪問。
length屬性,go()、back()、forward()方法

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106006.html

相關(guān)文章

  • JS高級(jí)程序設(shè)計(jì)(1-3)-筆記

    摘要:寫在前面本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書上知識(shí)點(diǎn)的概括。再就是畫圖這種。與瀏覽器沒有依賴關(guān)系。 寫在前面 本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書上知識(shí)點(diǎn)的概括。 第1章 JavaScript簡(jiǎn)介 JS誕生時(shí)間:1995年(好年輕...) JS誕生背景:表單數(shù)據(jù)合法性由服務(wù)端驗(yàn)證的用戶體驗(yàn)不好,希望能在客戶端進(jìn)行驗(yàn)證 JS現(xiàn)在用處:如果沒有...

    Cristic 評(píng)論0 收藏0
  • 《JavaScript高級(jí)程序設(shè)計(jì)》(3版)讀書筆記 8 BOM

    摘要:僅限數(shù)值表示新窗口的高度。此時(shí)只要檢查這個(gè)返回值就可以確定彈窗是否被屏蔽。返回一個(gè)布爾值,代表用戶選擇還是返回一個(gè)字符串或者,輸入了值并確定,返回字符串,其他方法關(guān)閉返回打印查找對(duì)話框。 ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(瀏覽器對(duì)象模型)則無疑才是真正的核心。 W3C為了把瀏覽器中JavaScript最基本的部分...

    AWang 評(píng)論0 收藏0
  • 高程3總結(jié)#8BOM

    摘要:對(duì)象的核心對(duì)象是,它表示瀏覽器的一個(gè)實(shí)例。而和則表示該容器中頁面視圖區(qū)的大小。在中,與返回相同的值,即視口大小而非瀏覽器窗口大小。第三個(gè)參數(shù)是一個(gè)逗號(hào)分隔的設(shè)置字符串,表示在新窗口中都顯示哪些特性。這應(yīng)該是用戶打開窗口后的第一個(gè)頁面 BOM window對(duì)象 BOM的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window對(duì)象有雙重角色,它既是通過JavaScript訪...

    MASAILA 評(píng)論0 收藏0
  • 《JavaScript高級(jí)程序設(shè)計(jì)》(3版)讀書筆記 1~2

    摘要:表示應(yīng)該立即下載腳本,但不應(yīng)妨礙頁面中的其他操作可選。表示通過屬性指定的代碼的字符集。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行。實(shí)際上,服務(wù)器在傳送文件時(shí)使用的類型通常是,但在中設(shè)置這個(gè)值卻可能導(dǎo)致腳本被忽略。 第1章 JavaScript 簡(jiǎn)介 雖然JavaScript和ECMAScript通常被人們用來表達(dá)相同的含義,但JavaScript的含義比ECMA-262要多得多...

    Corwien 評(píng)論0 收藏0
  • ApacheCN 人工智能知識(shí)樹 v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書一本書看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<