欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript之瀏覽器對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年07月03日 10:18:28   作者:liaoxuefeng  
JavaScript可以獲取瀏覽器提供的很多對(duì)象,并進(jìn)行操作。下面通過(guò)本文給大家介紹JavaScript之瀏覽器對(duì)象的相關(guān)知識(shí),一起看看吧

JavaScript可以獲取瀏覽器提供的很多對(duì)象,并進(jìn)行操作。

window

window對(duì)象不但充當(dāng)全局作用域,而且表示瀏覽器窗口。

window對(duì)象有innerWidth和innerHeight屬性,可以獲取瀏覽器窗口的內(nèi)部寬度和高度。內(nèi)部寬高是指除去菜單欄、工具欄、邊框等占位元素后,用于顯示網(wǎng)頁(yè)的凈寬高。

兼容性:IE<=8不支持。

// 可以調(diào)整瀏覽器窗口大小試試:
alert('window inner size: ' + window.innerWidth + ' x ' + window.innerHeight);

對(duì)應(yīng)的,還有一個(gè)outerWidth和outerHeight屬性,可以獲取瀏覽器窗口的整個(gè)寬高。

navigator

navigator對(duì)象表示瀏覽器的信息,最常用的屬性包括:

  • navigator.appName:瀏覽器名稱;
  • navigator.appVersion:瀏覽器版本;
  • navigator.language:瀏覽器設(shè)置的語(yǔ)言;
  • navigator.platform:操作系統(tǒng)類型;
  • navigator.userAgent:瀏覽器設(shè)定的User-Agent字符串。
alert('appName = ' + navigator.appName + '\n' +
   'appVersion = ' + navigator.appVersion + '\n' +
   'language = ' + navigator.language + '\n' +
   'platform = ' + navigator.platform + '\n' +
   'userAgent = ' + navigator.userAgent);

請(qǐng)注意,navigator的信息可以很容易地被用戶修改,所以JavaScript讀取的值不一定是正確的。很多初學(xué)者為了針對(duì)不同瀏覽器編寫(xiě)不同的代碼,喜歡用if判斷瀏覽器版本,例如:

var width;
if (getIEVersion(navigator.userAgent) < 9) {
  width = document.body.clientWidth;
} else {
  width = window.innerWidth;
}

但這樣既可能判斷不準(zhǔn)確,也很難維護(hù)代碼。正確的方法是充分利用JavaScript對(duì)不存在屬性返回undefined的特性,直接用短路運(yùn)算符||計(jì)算:

var width = window.innerWidth || document.body.clientWidth;


screen

screen對(duì)象表示屏幕的信息,常用的屬性有:

  • screen.width:屏幕寬度,以像素為單位;
  • screen.height:屏幕高度,以像素為單位;
  • screen.colorDepth:返回顏色位數(shù),如8、16、24。
alert('Screen size = ' + screen.width + ' x ' + screen.height);

location

location對(duì)象表示當(dāng)前頁(yè)面的URL信息。例如,一個(gè)完整的URL:

http://www.example.com:8080/path/index.html?a=1&b=2#TOP

可以用location.href獲取。要獲得URL各個(gè)部分的值,可以這么寫(xiě):

location.protocol; // 'http'
location.host; // 'www.example.com'
location.port; // '8080'
location.pathname; // '/path/index.html'
location.search; // '?a=1&b=2'
location.hash; // 'TOP'

要加載一個(gè)新頁(yè)面,可以調(diào)用location.assign()。如果要重新加載當(dāng)前頁(yè)面,調(diào)用location.reload()方法非常方便。

if (confirm('重新加載當(dāng)前頁(yè)' + location.href + '?')) {
  location.reload();
} else {
  location.assign('/discuss'); // 設(shè)置一個(gè)新的URL地址
}

document

document對(duì)象表示當(dāng)前頁(yè)面。由于HTML在瀏覽器中以DOM形式表示為樹(shù)形結(jié)構(gòu),document對(duì)象就是整個(gè)DOM樹(shù)的根節(jié)點(diǎn)。

document的title屬性是從HTML文檔中的<title>xxx</title>讀取的,但是可以動(dòng)態(tài)改變:

document.title = '努力學(xué)習(xí)JavaScript!';

請(qǐng)觀察瀏覽器窗口標(biāo)題的變化。

要查找DOM樹(shù)的某個(gè)節(jié)點(diǎn),需要從document對(duì)象開(kāi)始查找。最常用的查找是根據(jù)ID和Tag Name。

我們先準(zhǔn)備HTML數(shù)據(jù):

<dl id="drink-menu" style="border:solid 1px #ccc;padding:6px;">
  <dt>摩卡</dt>
  <dd>熱摩卡咖啡</dd>
  <dt>酸奶</dt>
  <dd>北京老酸奶</dd>
  <dt>果汁</dt>
  <dd>鮮榨蘋(píng)果汁</dd>
</dl>

用document對(duì)象提供的getElementById()和getElementsByTagName()可以按ID獲得一個(gè)DOM節(jié)點(diǎn)和按Tag名稱獲得一組DOM節(jié)點(diǎn):

var menu = document.getElementById('drink-menu');
var drinks = document.getElementsByTagName('dt');
var i, s, menu, drinks;

menu = document.getElementById('drink-menu');
menu.tagName; // 'DL'

drinks = document.getElementsByTagName('dt');
s = '提供的飲料有:';
for (i=0; i<drinks.length; i++) {
  s = s + drinks[i].innerHTML + ',';
}
alert(s);

摩卡
熱摩卡咖啡
酸奶
北京老酸奶
果汁
鮮榨蘋(píng)果汁

document對(duì)象還有一個(gè)cookie屬性,可以獲取當(dāng)前頁(yè)面的Cookie。

Cookie是由服務(wù)器發(fā)送的key-value標(biāo)示符。因?yàn)镠TTP協(xié)議是無(wú)狀態(tài)的,但是服務(wù)器要區(qū)分到底是哪個(gè)用戶發(fā)過(guò)來(lái)的請(qǐng)求,就可以用Cookie來(lái)區(qū)分。當(dāng)一個(gè)用戶成功登錄后,服務(wù)器發(fā)送一個(gè)Cookie給瀏覽器,例如user=ABC123XYZ(加密的字符串)...,此后,瀏覽器訪問(wèn)該網(wǎng)站時(shí),會(huì)在請(qǐng)求頭附上這個(gè)Cookie,服務(wù)器根據(jù)Cookie即可區(qū)分出用戶。

Cookie還可以存儲(chǔ)網(wǎng)站的一些設(shè)置,例如,頁(yè)面顯示的語(yǔ)言等等。

JavaScript可以通過(guò)document.cookie讀取到當(dāng)前頁(yè)面的Cookie:

document.cookie; // 'v=123; remember=true; prefer=zh'

由于JavaScript能讀取到頁(yè)面的Cookie,而用戶的登錄信息通常也存在Cookie中,這就造成了巨大的安全隱患,這是因?yàn)樵贖TML頁(yè)面中引入第三方的JavaScript代碼是允許的:

<!-- 當(dāng)前頁(yè)面在wwwexample.com -->
<html>
  <head>
    <script src="http://www.foo.com/jquery.js"></script>
  </head>
  ...
</html>

如果引入的第三方的JavaScript中存在惡意代碼,則www.foo.com網(wǎng)站將直接獲取到www.example.com網(wǎng)站的用戶登錄信息。

為了解決這個(gè)問(wèn)題,服務(wù)器在設(shè)置Cookie時(shí)可以使用httpOnly,設(shè)定了httpOnly的Cookie將不能被JavaScript讀取。這個(gè)行為由瀏覽器實(shí)現(xiàn),主流瀏覽器均支持httpOnly選項(xiàng),IE從IE6 SP1開(kāi)始支持。

為了確保安全,服務(wù)器端在設(shè)置Cookie時(shí),應(yīng)該始終堅(jiān)持使用httpOnly。

history

history對(duì)象保存了瀏覽器的歷史記錄,JavaScript可以調(diào)用history對(duì)象的back()或forward (),相當(dāng)于用戶點(diǎn)擊了瀏覽器的“后退”或“前進(jìn)”按鈕。

這個(gè)對(duì)象屬于歷史遺留對(duì)象,對(duì)于現(xiàn)代Web頁(yè)面來(lái)說(shuō),由于大量使用AJAX和頁(yè)面交互,簡(jiǎn)單粗暴地調(diào)用history.back()可能會(huì)讓用戶感到非常憤怒。

新手開(kāi)始設(shè)計(jì)Web頁(yè)面時(shí)喜歡在登錄頁(yè)登錄成功時(shí)調(diào)用history.back(),試圖回到登錄前的頁(yè)面。這是一種錯(cuò)誤的方法。

任何情況,你都不應(yīng)該使用history這個(gè)對(duì)象了。

相關(guān)文章

  • 淺談javascript的call()、apply()、bind()的用法

    淺談javascript的call()、apply()、bind()的用法

    這篇文章主要為大家詳細(xì)介紹了javascript的call()、apply()、bind()的用法,探討JavaScript中函數(shù)的一些特殊用法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • js觸發(fā)asp.net的Button的Onclick事件應(yīng)用

    js觸發(fā)asp.net的Button的Onclick事件應(yīng)用

    由于asp.net采用的是事件驅(qū)動(dòng)模式,所以默認(rèn)用戶按回車并沒(méi)有觸發(fā)按鈕的onclick事件。用戶按回車也不是沒(méi)有提交表單,通過(guò)httpwath可以看到,實(shí)際上頁(yè)面表單是提交到了form下的action頁(yè)面,只不過(guò)沒(méi)有觸發(fā)onclick事件而已,感興趣的朋友可以了解下,或許對(duì)你有所幫助
    2013-02-02
  • Bootstrap被封裝的彈層

    Bootstrap被封裝的彈層

    這篇文章主要介紹了Bootstrap被封裝的彈層 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • JavaScript-RegExp對(duì)象只能使用一次問(wèn)題解決方法

    JavaScript-RegExp對(duì)象只能使用一次問(wèn)題解決方法

    RegExp對(duì)象執(zhí)行了一次后就廢掉了,所以每次用RegExp都需要重新new一個(gè),下面有個(gè)示例,需要的朋友可以參考下
    2014-06-06
  • uni-app和web-view頁(yè)面相互傳參方法實(shí)例

    uni-app和web-view頁(yè)面相互傳參方法實(shí)例

    web-view是一個(gè)web瀏覽器組件,可以用來(lái)承載網(wǎng)頁(yè)的容器,會(huì)自動(dòng)鋪滿整個(gè)頁(yè)面,下面這篇文章主要給大家介紹了關(guān)于uni-app和web-view頁(yè)面相互傳參的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 微信小程序?qū)崿F(xiàn)拼圖小游戲

    微信小程序?qū)崿F(xiàn)拼圖小游戲

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 微信小程序?qū)崿F(xiàn)貪吃蛇游戲

    微信小程序?qū)崿F(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 微信小程序?qū)崿F(xiàn)獲取準(zhǔn)確的騰訊定位地址功能示例

    微信小程序?qū)崿F(xiàn)獲取準(zhǔn)確的騰訊定位地址功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)獲取準(zhǔn)確的騰訊定位地址功能,結(jié)合實(shí)例形式詳細(xì)分析了微信小程序使用騰訊地理位置接口的相關(guān)注冊(cè)、操作步驟及接口使用技巧,需要的朋友可以參考下
    2019-03-03
  • 在JavaScript中使用嚴(yán)格模式(Strict Mode)

    在JavaScript中使用嚴(yán)格模式(Strict Mode)

    這篇文章主要介紹了在JavaScript中使用嚴(yán)格模式(Strict Mode),除了正常運(yùn)行模式,ECMAscript 5添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)。顧名思義,這種模式使得Javascript在更嚴(yán)格的條件下運(yùn)行。,需要的朋友可以參考下
    2019-06-06
  • js控制input輸入字符解析

    js控制input輸入字符解析

    本篇文章主要是對(duì)js控制input輸入字符方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12

最新評(píng)論