最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript之瀏覽器對象_動力節(jié)點Java學(xué)院整理

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

JavaScript可以獲取瀏覽器提供的很多對象,并進行操作。

window

window對象不但充當全局作用域,而且表示瀏覽器窗口。

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

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

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

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

navigator

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

  • navigator.appName:瀏覽器名稱;
  • navigator.appVersion:瀏覽器版本;
  • navigator.language:瀏覽器設(shè)置的語言;
  • 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);

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

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

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

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


screen

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

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

location

location對象表示當前頁面的URL信息。例如,一個完整的URL:

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

可以用location.href獲取。要獲得URL各個部分的值,可以這么寫:

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'

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

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

document

document對象表示當前頁面。由于HTML在瀏覽器中以DOM形式表示為樹形結(jié)構(gòu),document對象就是整個DOM樹的根節(jié)點。

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

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

請觀察瀏覽器窗口標題的變化。

要查找DOM樹的某個節(jié)點,需要從document對象開始查找。最常用的查找是根據(jù)ID和Tag Name。

我們先準備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>鮮榨蘋果汁</dd>
</dl>

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

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);

摩卡
熱摩卡咖啡
酸奶
北京老酸奶
果汁
鮮榨蘋果汁

document對象還有一個cookie屬性,可以獲取當前頁面的Cookie。

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

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

JavaScript可以通過document.cookie讀取到當前頁面的Cookie:

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

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

<!-- 當前頁面在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)站的用戶登錄信息。

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

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

history

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

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

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

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

相關(guān)文章

  • 淺談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛

    淺談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛

    下面小編就為大家?guī)硪黄獪\談JS 數(shù)字和字符串之間相互轉(zhuǎn)化的糾紛。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Javascript中正則表達式的全局匹配模式分析

    Javascript中正則表達式的全局匹配模式分析

    先看一道JavaScript題目,據(jù)說是國內(nèi)某知名互聯(lián)網(wǎng)企業(yè)的JavaScript筆試題,如果對正則的全局匹配模式不了解的話可能會對下面的輸出結(jié)果感到疑惑。
    2011-04-04
  • 用javascript調(diào)出windows色版的代碼

    用javascript調(diào)出windows色版的代碼

    用javascript調(diào)出windows色版的代碼...
    2007-07-07
  • JavaScript中undefined、null與NaN的區(qū)別

    JavaScript中undefined、null與NaN的區(qū)別

    undefined、null和NaN都屬于javascript中的數(shù)據(jù)類型,本文主要介紹了 JavaScript中undefined、null與NaN的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 一文教你徹底學(xué)會JavaScript手寫防抖節(jié)流

    一文教你徹底學(xué)會JavaScript手寫防抖節(jié)流

    其實防抖和節(jié)流不僅僅在面試中會讓大家手寫,在實際項目中也可以起到性能優(yōu)化的作用,所以還是很有必要掌握的。本文就帶大家徹底學(xué)會JavaScript手寫防抖節(jié)流,需要的可以參考一下
    2022-11-11
  • 使用Bootstrap typeahead插件實現(xiàn)搜索框自動補全的方法

    使用Bootstrap typeahead插件實現(xiàn)搜索框自動補全的方法

    這篇文章主要介紹了使用Bootstrap typeahead插件實現(xiàn)搜索框自動補全的方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • Wordpress ThickBox 點擊圖片顯示下一張圖的修改方法

    Wordpress ThickBox 點擊圖片顯示下一張圖的修改方法

    Wordpress自帶的ThickBox特效中,單擊圖片會調(diào)用 tb_remove 以關(guān)閉特效窗口,現(xiàn)將修改其動作為顯示下一張圖。
    2010-12-12
  • V8實現(xiàn)字符串拼接

    V8實現(xiàn)字符串拼接

    本文主要介紹了V8實現(xiàn)字符串拼接,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • js實現(xiàn)從數(shù)組里隨機獲取元素

    js實現(xiàn)從數(shù)組里隨機獲取元素

    這篇文章主要介紹了js實現(xiàn)從數(shù)組里隨機獲取元素的方法,以及個人封裝的js代碼分享,十分的實用,這里推薦給小伙伴們
    2015-01-01
  • JavaScript的Module模式編程深入分析

    JavaScript的Module模式編程深入分析

    Module模式是常見的JavaScript編程模式,一般來說這種模式是很好理解的,但是依然有一些高級的用法沒有得到太多的注意。在這篇文章中我會提到Module模式的基礎(chǔ)知識和一些真正重要的話題,包括一個可能是我原創(chuàng)的
    2013-08-08

最新評論

喀喇沁旗| 陈巴尔虎旗| 敦化市| 西宁市| 伊通| 临颍县| 营口市| 定陶县| 太和县| 乌兰浩特市| 金平| 郁南县| 阜城县| 墨江| 连南| 永登县| 新和县| 塔城市| 寿光市| 同江市| 新民市| 离岛区| 南乐县| 松阳县| 祁门县| 临朐县| 阿合奇县| 仪陇县| 永康市| 巴中市| 永吉县| 石屏县| 泸定县| 新余市| 贡觉县| 会同县| 南开区| 杭锦后旗| 中山市| 读书| 启东市|