JavaScriptボムとは何ですか

Jun 09, 2021 pm 03:39 PM
bom javascript

JavaScript では、BOM はブラウザ オブジェクト モデル (ブラウザ オブジェクト モデル) を指し、コンテンツとは独立してブラウザ ウィンドウと対話するオブジェクトを提供します。主にウィンドウ間の対話を管理するために使用されます。コアオブジェクトはウィンドウです。

JavaScriptボムとは何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

1. BOM とは

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

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

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

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

  • BOM には標準がありません。JavaScript 構文の標準化組織は ECMA で、DOM の標準化組織は W3C です。BOM はもともと Netscape ブラウザ標準の一部でした。

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

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

BOM 構造図

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

例:

ウィンドウを開く

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

ウィンドウを閉じる:

window.close();
ログイン後にコピー

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

1. タイマー

遅延実行

setTimeout( [string | function] code, interval);
clearTimeout([number] intervalId);
ログイン後にコピー
<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);     //清除定时器
ログイン後にコピー
カウントダウンケース:
<body>
<input type="button" value="倒计时开始10" id="btn" disabled/>
<script>
    var btn = document.getElementById("btn");
    var num = 10;
    var timerId = setInterval(function () {
        num--;
        btn.value = "到时器开始" + num;
        if (num == 0) {
            clearInterval(timerId);
            btn.disabled = false;
            btn.value = "同意,可以点了";
        }
    },1000);
</script>
</body>
ログイン後にコピー

2.offsetシリーズメソッド

#offsetWidth と offsetHeightoffsetLeft と style の違い。 left

#offsetHeight の構成

offsetHeight = 高さのパディング境界線

offsetWidth は同じです

##offsetHeight と style.height の違い

1.demo.style.height はインライン スタイルのみを取得できます。取得できません

2. .style.height は文字列 (単位 px)、offsetHeight は数値 (単位なし)

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

つまり、demo.style.height は実際の高さを取得します/要素の幅を設定し、 .style.height を使用して高さ/幅を設定します

offsetLeft および offsetTop

offsetLeft Form

#1、最も近い (配置された) 親要素の左/上にあります

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

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

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

2,offsetLeft只读,style.left可读可写

3,offsetLeft是数值,style.left是字符串并且有单位px

4,如果没有定位,style.left获取的数值可能是无效的

5,最大的区别:offsetLeft以border左上角为基准, style.left以margin左上角为基准

offsetParent

构成

1. 返回该对象距离最近的带有定位的父级元素

2. 如果当前元素的所有父级元素都没有定位(position为absolute或relative),那么offsetParent为body

3. offsetLeft获取的就是相对于offsetParent的距离

与parentNode的区别

parentNode始终指向的是当前元素的最近的父元素,无论定位与否

offset示意图

3.scroll系列方法

scrollHeight和scrollWidth对象内部的实际内容的高度/宽度(不包括border)
scrollTop和scrollLeft被卷去部分的顶部/左侧 到 可视区域 顶部/左侧 的距离
onscroll事件滚动条滚动触发的事件
页面滚动坐标var scrollTop = window.pageYoffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

scroll示意图

4.client系列

clientX和clientY 获取鼠标在可视区域的位置 clientX = width + padding,clientY = height + padding

clientLeft 边框的宽度,若有滚动条的话,包括滚动条

client示意图

例: 获得页面可视区域的大小

function client() {
            return {
                        clientWidth: window.innerWidth || document.body.clientWidth || document.documentElement.clientWidth || 0;
                        clientHeight: window.innerHeight || document.body.clientHeitght || document.documentElement.clientHeight || 0;
            };
}
ログイン後にコピー

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" 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" 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.键盘事件对象

方法

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ボムとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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テクノロジー

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

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

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