From 7834e6eeb0b521d85aa889b8f136b83206bc2046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=9E=AB?= <1687425871@qq.com> Date: Wed, 16 Nov 2022 05:31:56 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E4=B8=83=E9=87=8C=E9=A6=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈枫 <1687425871@qq.com> --- ...345\236\213DOM\347\254\224\350\256\260.md" | 432 ++++++++++++++++++ ...2022-11-15-DOM\347\254\224\350\256\260.md" | 340 ++++++++++++++ 2 files changed, 772 insertions(+) create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-08-\346\265\217\350\247\210\345\231\250\345\257\271\350\261\241\346\250\241\345\236\213DOM\347\254\224\350\256\260.md" create mode 100644 "03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-15-DOM\347\254\224\350\256\260.md" diff --git "a/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-08-\346\265\217\350\247\210\345\231\250\345\257\271\350\261\241\346\250\241\345\236\213DOM\347\254\224\350\256\260.md" "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-08-\346\265\217\350\247\210\345\231\250\345\257\271\350\261\241\346\250\241\345\236\213DOM\347\254\224\350\256\260.md" new file mode 100644 index 0000000..5fbe476 --- /dev/null +++ "b/03\351\231\210\346\236\253/\347\254\224\350\256\260/2022-11-08-\346\265\217\350\247\210\345\231\250\345\257\271\350\261\241\346\250\241\345\236\213DOM\347\254\224\350\256\260.md" @@ -0,0 +1,432 @@ +# 浏览器对象模型(BoM) + +## (一)浏览器 + +由于JavaScript的出现就是为了能在浏览器中运行,所以,浏览器自然是JavaScript开发者必须要关注的。 + +目前主流的浏览器分这么几种: + +1.IE 6~11:国内用得最多的IE浏览器,历来对W3C标准支持差。从IE10开始支持ES6标准; + +2.Chrome:Google出品的基于Webkit内核浏览器,内置了非常强悍的JavaScript引擎——V8。由于Chrome一经安装就时刻保持自升级,所以不用管它的版本,最新版早就支持ES6了; + +3.Safari:Apple的Mac系统自带的基于Webkit内核的浏览器,从OS X 10.7 Lion自带的6.1版本开始支持ES6,目前最新的OS X 10.11 El Capitan自带的Safari版本是9.x,早已支持ES6; + +4.Firefox:Mozilla自己研制的Gecko内核和JavaScript引擎OdinMonkey。早期的Firefox按版本发布,后来终于聪明地学习Chrome的做法进行自升级,时刻保持最新; + +移动设备上目前iOS和Android两大阵营分别主要使用Apple的Safari和Google的Chrome,由于两者都是Webkit核心,结果HTML5首先在手机上全面普及(桌面绝对是Microsoft拖了后腿),对JavaScript的标准支持也很好,最新版本均支持ES6。 + +其他浏览器如Opera等由于市场份额太小就被自动忽略了。 + +另外还要注意识别各种国产浏览器,如某某安全浏览器,某某旋风浏览器,它们只是做了一个壳,其核心调用的是IE,也有号称同时支持IE和Webkit的“双核”浏览器。 + +不同的浏览器对JavaScript支持的差异主要是,有些API的接口不一样,比如AJAX,File接口。对于ES6标准,不同的浏览器对各个特性支持也不一样。 + +在编写JavaScript的时候,就要充分考虑到浏览器的差异,尽量让同一份JavaScript代码能运行在不同的浏览器中。 + +***** + +## (二)浏览器对象 + +**JavaScript可以获取浏览器提供的很多对象,并进行操作。** + +浏览器对象模型主要包括window、history、location和document等对象,其中window对象是整个BOM的顶层对象。 + +### ==1. window== + +**window[窗口]对象不但充当全局作用域,而且表示浏览器窗口。** + +window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高。 + +兼容性:IE<=8不支持。 + +```js +'use strict'; +// 可以调整浏览器窗口大小试试: +console.log('window inner size: ' + window.innerWidth + ' x ' + window.innerHeight); +``` + +对应的,还有一个outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高。 + +#### window对象 + +| document | 窗口中当前显示的文档对象 | +| -------- | ------------------------ | +| history | 保存窗口最近加载的URL | +| location | 当前窗口的URL | + +#### window常用方法 + +1. prompt():显示可提示用户输入的对话框; +2. alert():显示带有一个提示消息和一个确定按钮的警示框; +3. confirm():显示一个带有提示信息、确定和取消按钮的确认框; +4. close():关闭浏览器窗口; +5. open():打开一个新的浏览器窗口,加载给定URL所指定的文档; +6. setTimeout():在设定的毫秒数后调用函数或计算表达式; +7. setInterval():按照设定的周期(以毫秒计)来重复调用函数或表达式; +8. clearInterval():取消重复设置,与setInterval对应; + +******** + +#### setTimeout() + +全局的 **`setTimeout()`** 方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。 + +语法 + +```js +ar timeoutID = scope.setTimeout(function[, delay, arg1, arg2, ...]); +var timeoutID = scope.setTimeout(function[, delay]);//一般传入参数为function delay +var timeoutID = scope.setTimeout(code[, delay]); +``` + +**参数** + +- `function` + + [`function`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function) 是你想要在到期时间 (`delay`毫秒) 之后执行的[函数](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function)。 + +- `code` + + 这是一个可选语法,你可以使用字符串而不是[`function`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function) ,在`delay`毫秒之后编译和执行字符串 (使用该语法是**不推荐的,** 原因和使用 [`eval()`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval)一样,有安全风险)。 + +- `delay` 可选 + + 延迟的毫秒数 (一秒等于 1000 毫秒),函数的调用会在该延迟之后发生。如果省略该参数,delay 取默认值 0,意味着“马上”执行,或者尽快执行。不管是哪种情况,实际的延迟时间可能会比期待的 (delay 毫秒数) 值长,原因请查看[实际延时比设定值更久的原因:最小延迟时间](https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout#实际延时比设定值更久的原因:最小延迟时间)。 + +- `arg1, ..., argN` 可选 + + 附加参数,一旦定时器到期,它们会作为参数传递给function + +*** + +**返回值** + +返回值`timeoutID`是一个正整数,表示定时器的编号。这个值可以传递给[`clearTimeout()`](https://developer.mozilla.org/zh-CN/docs/Web/API/clearTimeout)来取消该定时器。 + +需要注意的是 `setTimeout()` 和 [`setInterval()`](https://developer.mozilla.org/zh-CN/docs/Web/API/setInterval) 共用一个编号池,技术上,`clearTimeout()` 和 [`clearInterval()`](https://developer.mozilla.org/zh-CN/docs/Web/API/clearInterval) 可以互换。但是,为了避免混淆,不要混用取消定时函数。 + +在同一个对象上(一个 window 或者 worker),`setTimeout()`或者`setInterval()`在后续的调用不会重用同一个定时器编号。但是不同的对象使用独立的编号池。 + +*** + +**示例** + +```html +
Live Example
+ + + +``` + +```js + +``` + +********** + +#### setInterval() + +**`setInterval()`** 方法重复调用一个函数或执行一个代码片段,在每次调用之间具有固定的时间间隔。 + +**语法** + +```js +var intervalID = setInterval(func, [delay, arg1, arg2, ...]); +var intervalID = setInterval(function[, delay]); +var intervalID = setInterval(code, [delay]); +``` + +**参数** + +- `func` + + 要重复调用的[`函数`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function),每经过指定 `delay` 毫秒后执行一次。第一次调用发生在 `delay` 毫秒之后。 + +- `code` + + 这个语法是可选的,你可以传递一个字符串来代替一个函数对象,你传递的字符串会被编译然后每经过 `delay` 毫秒执行一次。这个语法因为与 [`eval()`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval) 存在相同的安全风险所以*不推荐*使用。 + +- `delay` + + 是每次延迟的毫秒数(一秒等于 1000 毫秒),函数的每次调用会在该延迟之后发生。如果未指定,则其默认值为 0。参见下方的[延迟限制](https://developer.mozilla.org/zh-CN/docs/Web/API/setInterval#延迟限制)以了解详细的 `delay` 的取值范围。 + +- `arg1, ..., argN` 可选 + + 当定时器过期的时候,将被传递给 *func* 函数的附加参数。 + +**返回值** + +返回值 `intervalID` 是一个非零数值,用来标识通过 `setInterval()` 创建的定时器,这个值可以用来作为 [`clearInterval()`](https://developer.mozilla.org/zh-CN/docs/Web/API/clearInterval) 的参数来清除对应的定时器。 + +******* + +**示例** + +```js + +``` + +```html +| 比特币1枚 | +谢谢参与 | +谢谢参与 | +
| 谢谢参与 | +iPhone14 | +谢谢参与 | +
| 谢谢参与 | +谢谢参与 | +智子一颗 | +
JavaScript
+Java
+Python
+Scheme
+JavaScript
添加到Java
+Python
+Scheme
+JavaScript
+Java
+Python
+Scheme
+Haskell
+| 翁章彬 | +谢琰宸 | +陈枫 | +卢佳凯 | +黄炜杰 | +何睿 | +吴守康 | +黄楷钊 | +陈烽杰 | +
| 余金星 | +刘嘉远 | +周泽强 | +洪灿芳 | +薛晖 | +吴明杰 | +胡志文 | +侯锟铖 | +杨晨哲 | +
| 陈志梁 | +吴泳泰 | +李雅芸 | +詹源铠 | +陈钰锋 | +杨丰华 | +曾鹏 | +吴昊绩 | +吴超 | +
| 胡江雄 | +谷兆明 | +陈洋 | +张平 | +危振山 | +达兴建 | +张静 | +叶小杰 | +周飘 | +
| 陈振国 | +贺晋卓 | +李涛 | +赖杰林 | +刘旭涛 | +田鑫强 | +江嘉兴 | +巫晨羿 | +范雅欢 | +
