ホームページ ウェブフロントエンド jsチュートリアル JavaScriptにおけるBOMの基礎知識まとめ

JavaScriptにおけるBOMの基礎知識まとめ

Feb 17, 2017 pm 05:21 PM
bom javascript

1. BOMとは

BOM(Browser Object Document)はブラウザのオブジェクトモデルです。

BOM は、コンテンツとは独立してブラウザウィンドウと対話するオブジェクトを提供します。

BOM は主にウィンドウ間の通信を管理するために使用されるため、そのコアオブジェクトはウィンドウです

BOM は一連の関連オブジェクトの構成で構成され、各オブジェクトは多くの機能を提供します。メソッドとプロパティ;

BOM には標準がありません。JavaScript 構文の標準化団体は ECMA で、DOM の標準化団体は W3C であり、BOM は元々 Netscape ブラウザー標準の一部でした。

2. BOM を学習するときに学ぶべきこと

ブラウザの移動やサイズ変更ができるウィンドウ オブジェクト、ナビゲーションに使用できる位置オブジェクトや履歴オブジェクトなど、ブラウザ ウィンドウと対話するいくつかのオブジェクトを学習します。ブラウザ、オペレーティング システムとユーザー画面情報のナビゲーターと画面オブジェクトを取得でき、ドキュメントを入り口として HTML ドキュメントにアクセスしたり、フレーム オブジェクトを管理したりできます。ここではウィンドウオブジェクトなどの基礎知識のみ紹介し、ECMAscriptの知識についても解説します。その他のオブジェクトである Location、Screen、Navigator、History については、個別に詳しく説明しません。 。

3. ウィンドウ オブジェクト

ウィンドウ オブジェクトは、js の最上位オブジェクトです。グローバル スコープで定義されたすべての変数と関数は、呼び出し時にウィンドウ オブジェクトのプロパティとメソッドになります。

例:

打开窗口 window.open(url,target,param);
// url 要打开的地址
//target 新窗口的位置 _blank _self _parent(父框架)
//param 新窗口的一些设置
//返回值,新窗口的句柄
关闭窗口:window.close();
ログイン後にコピー

IV. BOM 断片的知識 (ウィンドウ オブジェクト)

1. 遅延実行 setTimeout([string | function] code, interval);

; E
 <body>
 <input type="button" value="closeTimerId" id="btn">
 <script>
 var btn = document.getElementById("btn");
 var timerId = setTimeout(function () {
  alert("23333");
 }, 3000);
 btn.onclick = function () { //在设置的时间之前(3s内)点击可以取消定时器
  clearTimeout(timerId);
 }
 </script>
 </body>
ログイン後にコピー


var timeRid = SetInterval (code, interval);

Clearinterval (Timerid); // タイマーをクリアします

時間の場合:


Rreeee

2.offsetシリーズメソッド

offsetWidthとoffsetHeight

offsetHeight = height + padding + border

offsetWidth は同じです

offsetHeight と style.height の違いは

1、demo.style.height はインライン スタイルのみを取得でき、それ以外の場合は取得できません

2。 height は文字列 (単位 px)、offsetHeight は数値 (単位なし) です

3. .style.height はインライン スタイルを設定できますが、offsetHeight は読み取り専用属性であり、設定できません

つまり、デモ: .style.height は要素の実際の高さ/幅を取得します。.style.height を使用して高さ/幅

offsetLeft と offsetTop

offsetLeft の構成

1 を、それ自体に最も近い (配置された) 親要素に設定します。

2 の側面/上面、すべての親要素が配置されていない場合、本文が優先されます

3、offsetLeft は、その境界線の左側から親パディングの左側までの距離です

offsetLeft の違いstyle.left と style.left

1、style.left はインライン スタイルのみを取得できます

2、offsetLeft は読み取り専用、style.left は読み書き可能です

3、offsetLeft は数値、style.left は文字列です単位が px

4 の場合、位置決めがないと、style.left で取得した値が無効になる可能性があります

5。最大の違い: offsetLeft は境界線の左上隅に基づいており、style.left は境界線の左上隅に基づいています。 margin の左上隅

offsetParent は

1 で構成されます。オブジェクトの距離を返します。現在の要素のすべての親要素が配置されていない場合 (位置が絶対または相対である場合)、offsetParent になります。 body

3. offsetLeft は offsetParent

からの相対的な距離を取得します

parentNode との違い

parentNode は、配置されているかどうかに関係なく、常に現在の要素の最も近い親要素を指します

3.scroll 系列のメソッド

scrollHeight とscrollWidth オブジェクト内の実際のコンテンツの高さ/幅 (境界線を除く)

scrollTop とscrollLeft スクロールされた部分の上/左辺からビジュアル領域の上/左辺までの距離

onscroll イベントスクロール バーのスクロールによってトリガーされるイベント

ページのスクロール座標 varscrollTop = window.pageYoffset || document.documentElement .scrollTop ||

4.client series

clientY の位置を取得します表示領域内のマウス clientX = width + padding、clientY = height + padding

clientLeft 境界線の幅、スクロール バーがある場合、スクロール バーを含む

例: の表示領域のサイズを取得するページ

5. イベント パラメータ e

イベントが発生すると、システムはイベント パラメータ e ブラウザ互換性検出に関連するデータを自動的にイベント処理関数に渡します。 e = e || window.event

e.pageX および e.pageY

获取鼠标在页面中的位置(IE8中不支持pageX和pageY,支持window.event获取参数事件)        pageX = clientX + 页面滚动出去的距离

6.获得计算后样式的方法

w3c标准        window.get ComputedStyle(element, null)[属性]IE浏览器        element.currentStyle[属性]封装浏览器兼容性函数 

function getStyle(element, attr) {
 if(window.getComputedStyle) {
  return window.getComputedStyle(element, null)[attr];
 } else {
  return element.currentStyle[attr];
 }
 }
ログイン後にコピー

7.事件补充

注册事件

注册事件的性能问题

移除事件

事件冒泡

事件捕获  事件的三个阶段

事件对象的常见属性

DOM笔记里有提到注册事件和移除事件,这里着重讲事件对象,事件对象的常见属性

7.1 target 和currentTarget

target        始终是点击的元素(IE8及之前是srcElement)

currentTarget        执行事件处理函数的元素

this        始终和currentTarget一样

7.2 事件冒泡

用addEventListener注册事件的时候,第三个参数是false,即是冒泡。

冒泡的好处 - 事件委托

从一个例子中说明

 <body>
 <ul id="ul">
 <li>我是第1个li标签</li>
 <li>我是第2个li标签</li>
 <li>我是第3个li标签</li>
 <li>我是第4个li标签</li>
 </ul>
 <input type="button" value="insertLi" id="btn">
 <script>
 var ul = document.getElementById("ul");
 var btn = document.getElementById("btn");
 //把本来应该给li注册的事件,委托给ul,只需要给一个元素注册事件
 //动态创建的li,也会执行预期的效果
 ul.addEventListener("click", test, false); //注册点击事件
 btn.onclick = function () { //点击同样会有alert
  var li = document.createElement("li");
  li.innerHTML = "我是新插入的li标签";
  ul.appendChild(li);
 };
 //函数写在注册事件代码之外,提高性能
 function test(e) {
  alert(e.target.innerText);
 }
 </script>
 </body>
ログイン後にコピー

当事件冒泡影响到了其他功能的实现时,需要阻止冒泡    

e.stopPropagation( )        IE8及之前:   event.cancleBubble = true;

阻止默认行为的执行

e.preventDefault()        IE8及之前:  event.returnValue = false;

看一下阻止跳转到百度的例子:

<body>
 <a href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" id="link">百度</a>
 <script>
 var link = document.getElementById("link");
 link.addEventListener("click", fn, false);
 function fn(e) {
  e.preventDefault();
  //若用return false; 不起作用,若用link.onclick = function();return false可以阻止
 }
 </script>
 </body>
ログイン後にコピー

7.3 鼠标事件的参数

e.type        事件的类型,如click,mouseover

事件的3个阶段        1 捕获阶段 2 目标阶段 3 冒泡阶段

e.eventPhase        事件阶段

shiftKey/ctrlKey/altKey        按下鼠标同时按下组合键

button        获取鼠标的按键

e.clientX和e.clientY        获取鼠标在可视区域的位置

还有7.2中的取消事件冒泡和阻止默认行为的执行

8.正则表达式

定义:

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

规则:

1 元字符       
        .   匹配任何单个字符,除了换行
        d  数字   \D 非数字       [0-9]        w  数字 字母 下划线   \W 非     [0-9a-zA-Z_]        \s  空白   \S 非空白
        \n  换行
        \t  制表符

2 范围-- 匹配的是一个字符        [0-9][0123][a-z][A-Z]  匹配的是一个字符

3 | 或者        | 或者

4 量词  -只修饰一个字符 

        a+  1个或多个a
        a?   1个或0个a
        a*   0个或多个a
   a{x}  x个n
   a{x,} 至少x个a
   a{x,y}  x-y个a

5 开始结束     

          ^a  以a开始
          a$  以a结束

6 ( ) 看成是一个整体,即分组 

7 匹配汉字        [\u4e00-\u9fa5]8 参数

i  忽略大小写
g 全局匹配

9 ^在[ ]中的作用——取反 

10 贪婪模式和非贪婪模式

默认情况  贪婪模式  <.+>
非贪婪模式  <.+?>

8.1 正则表达式对象RegExp

<body>
 <a href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" id="link">百度</a>
 <script>
 // var regularExpression = new RegExp("\\d"); //第一种写法
 var regularExpression = /\d/; //第二种写法
 var str = "adfj23dald";
 console.log(regularExpression.test(str)); //test就是匹配方法,结果是true
 </script>
 </body>
ログイン後にコピー

8.2 正则之匹配

例:验证电子邮箱

//验证电子邮箱
 // abc@sohu.com
 // 11111@qq.com
 // aaaaa@163.com
 // abc@sina.com.cn 
 var reg = /^\w+@\w+\.\w+(\.\w+)?$/;
 var str = "abc@sina.com.cn";
 console.log(reg.test(str));
ログイン後にコピー

8.3 正则之提取

例:找数字

 var str = "张三: 1000,李四:5000,王五:8000。";
 var reg = /\d+/g;
 //默认情况下,找到第一个匹配的结果就返回,后面加个g,就是全局找
 var arr = str.match(reg);
 console.log(arr);
ログイン後にコピー

8.4 正则之替换

例:所有的逗号替换成句号

 var str = "abc,efg,123,abc,123,a";
 str = str.replace(/,/g,".");
 console.log(str);
ログイン後にコピー

8.5 正则的分组( )

在正则表达式中用( )把要分到一组的内容括起来,组分别是RegExp.$1    RegExp.$2等等

例:交换位置  源字符串"5=a, 6=b, 7=c"  要的结果"a=5, b=6, c=7"

var str = "5=a, 6=b, 7=c";
str = str.replace(/(\d+)=(\w+)/g, "$2=$1");
console.log(str);
ログイン後にコピー

9.键盘事件对象[b][/b]

方法

keydown  按下时

keypress  按下

keyup  抬起时

属性

keyCode  键盘码,只有数字和字母对应ASCII码

charCode  对应ASCII码,只有在keypress中才生效(IE9+)

例:在切换鼠标焦点时,用enter键代替tab键

<body>
 <input type="text"><input type="text"><input id="t1" type="text"><input type="text"><input type="text"><input type="text"><inputtype="text"><input type="text"><input type="text"><input type="text">
 <script>
 var inputs = document.body.getElementsByTagName("input");
 for(var i = 0, length = inputs.length; i < length ; i++) {
  var input = inputs[i];
  //回车键的keyCode是13
  if(input.type === "text") {
  //按下回车,让下一个文本框获得焦点
  input.onkeydown = function (e) {
   if(e.keyCode === 13) {
   this.nextElementSibling.focus();//focus() 他触发了onfocus事件
   }
  }
  }
 }
 </script>
 </body>
ログイン後にコピー

补充:js中的instanceof运算符介绍

判断某个变量是不是某种类型的对象

 var num = 5;
 var arr = [];
 console.log(num instanceof Array);  //false
 console.log(arr instanceof Array);  //true
ログイン後にコピー

更多javascript中BOM基础知识总结相关文章请关注PHP中文网!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles