中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

BOM怎么在JavaScript項目中應用

發布時間:2021-01-20 16:02:00 來源:億速云 閱讀:184 作者:Leah 欄目:web開發

這篇文章將為大家詳細講解有關BOM怎么在JavaScript項目中應用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

BOM基礎

我們先來看一個BOM的最基礎功能:打開、關閉窗口:

<html>
 <head>
  <meta charset="utf-8">
  <title>無標題文檔</title>
 </head>
 <body>
  <input type="button" value="打開窗口" onclick="window.open('http://www.zhinengshe.com/');" />
 </body></html>

open方法用于打開一個窗口,相對的close方法用于關閉一個窗口。這里我們可以用open方法實現一個應用:運行代碼。

在這之前,我們要給大家補充一個關于document.write的小知識。

<!DOCTYPE HTML><html>
 <head>
  <meta charset="utf-8">
  <title>無標題文檔</title>
 </head>
 <body>
  <input type="button" value="write" onclick="document.write('abc')" />
 </body></html>

打開源碼可以發現,當我們點擊了按鈕后,整個頁面的源碼就只剩下了“abc”——也就是說,如果document.write如果放在事件里面使用,會先將頁面完全清空再重寫。

可以看到,我們的運行代碼案例,使用document.write方法是非常合適的:

<html>
 <head>
  <meta charset="utf-8">
  <title>無標題文檔</title>
  <script>
  window.onload=function ()
  {
   var oTxt=document.getElementById('txt1');
   var oBtn=document.getElementById('btn1');
  
   oBtn.onclick=function ()
   {
    var oNewWin=window.open('about:blank', '_blank');
  
    oNewWin.document.write(oTxt.value);
   };
  };
  </script>
 </head>
 <body>
  <textarea id="txt1" rows="10" cols="40"></textarea><br>
  <input id="btn1" type="button" value="運行" />
 </body></html>

其中_blank代表新打開一個窗口(在本窗口打開用_self),about:blank代表打開的是一個空白窗口,然后我們使用document.write向新窗口寫入html,就可以在新窗口運行html代碼了。

講完open后,我們來說說close的一些問題。close的使用非常簡單,使用window.close便可以執行關閉窗口的事件。但是在火狐瀏覽器下,是無法close一個用戶打開的窗口,只有一個窗口是用open方法打開的時候才能用close方法關閉。

講完open和close方法后,我們來說兩個常用的屬性:window.nevigator.userAgent和window.location。前者的作用是獲取當前瀏覽器的版本信息,后者的作用是獲取當前網頁的地址(不僅可以讀取,也可以賦值,可以通過修改location跳轉當前網頁的網址),大家可以使用一下看看返回的內容,這里就不再列舉了。

尺寸及坐標

這里我們討論一下JS關于尺寸和坐標的內容。

首先要提到的就是關于可視區尺寸的知識。什么是可視區尺寸呢?其實就是用戶端能在屏幕上看到網頁部分的尺寸。可視區的尺寸會隨著窗口的大小而變化。

通過document.documentElement.clientWidth和document.documentElement.clientHeight可以獲取當前頁面可視區的寬度和高度。

<html>
 <head>
  <meta charset="utf-8">
  <title>無標題文檔</title>
  <script>
  window.onload=function ()
  {
   var oBtn=document.getElementById('btn1');
   oBtn.onclick=function ()
   {
    alert('寬:'+document.documentElement.clientWidth+'高:'+document.documentElement.clientHeight);
   };
  };
  </script>
 </head>
 <body>
  <input id="btn1" type="button" value="可視區大小" />
 </body></html>

效果如下:

BOM怎么在JavaScript項目中應用

此外針對可視區,還有一個屬性叫scrollTop,也就是滾動距離,或者說是可視區到頁面頂端的距離。

<!DOCTYPE HTML><html>
 <head>
 <meta charset="utf-8">
 <title>無標題文檔</title>
 <script>
 document.onclick=function ()
 {
  //IE、FF
  //alert(document.documentElement.scrollTop);
 
  //chrome
  //alert(document.body.scrollTop);
 
  var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
 
  alert(scrollTop);
 };
 </script>
 </head>
 <body >
 </body></html>

效果如下:

//這里有圖

值得注意的是document.documentElement.scrollTop僅僅在ie下兼容,在chrome下的寫法則為document.body.scrollTop,因此我們用||方法處理兼容問題。
常用方法和事件

這里我們嘗試使用除fixed以外的另一種方法實現元素的固定定位(fixed在ie6下不兼容)。

這里我們再畫一張圖:

BOM怎么在JavaScript項目中應用

可以看得出,只要我們將黑線的長度計算出來,就可以將右下方的div塊進行固定定位了。而黑線的長度正好等于可視區高度減去div塊的offsetHeight。

<html>
 <head>
  <meta charset="utf-8">
  <title>無標題文檔</title>
  <style>
  #div1 {width:200px; height:150px; background:red; position:absolute; right:0; bottom:0;}
  body {height:2000px;}
  </style>
  <script>
  window.onscroll=function ()
  {
   var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
   var oDiv=document.getElementById('div1');  oDiv.style.top=document.documentElement.clientHeight-oDiv.offsetHeight+scrollTop+'px';
  };
  </script>
 </head>
 <body>
 <div id="div1"></div>
 </body></html>

效果如下:

BOM怎么在JavaScript項目中應用

可以看到我們的div塊有輕微的抖動,因為onscroll函數一直在發生,每發生一次便會調用一次,所以會發生這種情況。此外還存在一個更嚴重的情況:如果我們改變窗口大小,div塊并不會跟著走而是保持在原地,因此我們還要用到另一個事件——

window.onresize(頁面大小改變時觸發的事件:):

window.onscroll=window.onresize=function (){...}

最后我們來說說幾個常用的系統對話框:

  • alert("內容") 警告框,沒有返回值

  • confirm("提問的內容") 選擇框,會給確定或取消選項,返回一個boolean

  • prompt("提示文字","默認文字") 會彈出一個可輸入的文本框,返回值為輸入的文本內容(字符串),不輸入則為null

關于BOM怎么在JavaScript項目中應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西充县| 中西区| 龙门县| 阿瓦提县| 怀安县| 金平| 襄城县| 陇南市| 道孚县| 沁源县| 宝丰县| 同仁县| 金华市| 岳池县| 灵台县| 车险| 迁安市| 青田县| 上高县| 汝阳县| 宜城市| 马山县| 资溪县| 莆田市| 鞍山市| 东光县| 沁水县| 皋兰县| 夏河县| 泸西县| 新巴尔虎左旗| 津南区| 小金县| 克什克腾旗| 西安市| 宁国市| 张掖市| 鞍山市| 天峨县| 芮城县| 湘潭县|