IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> BOM(浏览器对象、单线程) -> 正文阅读

[JavaScript知识库]BOM(浏览器对象、单线程)

一、BOM:浏览器对象,可以和浏览器窗口进行交互的对象,核心对象是window。

BOM与DOM的区别:

DOM是文档对象模型,把文档当作一个对象来看待,它的顶级对象是document。

BOM是浏览器对象模型,是把浏览器当做一个对象来看待,它的顶级对象是window。

1、窗口载入事件(页面载入事件):

window.onload是窗口(页面)加载事件,当文档内容(包括图像、脚本文件、CSS文件等)完全加载完成会触发该事件,调用该事件对应的事件处理函数。

document.DOMContentLoaded document.DOMContentLoaded加载事件,会在DOM加载完成时触发,这里所说的加载不包括CSS样式表、图片和flash动画等额外内容的加载。

????????window.onload = function(){}

? ? ? ? window.addEventListener('load',function(){})

<body onload="test()">
    <script>
        // window.addEventListener('load',function(){
        //     alert('页面加载中...')
        // })
        function test(){
            alert('页面加载中...')
        }
    </script>
</body>

2、调整窗口大小事件

window.onresize当调整window窗口大小的时候,就触发window.onresize事件,调用事件处理函数。

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

????????window.addEventListener('resize',function(){})

window.addEventListener('resize',function(){
            console.log('窗口大小改变了')
        })

3、定时器方法

(1)setTimeout(function(){},间隔时间):在指定的毫秒数后调用函数或执行一段代码

? ? ? ? var st?= setTimeout(func,1000);

示例:倒计时牌

<style>
    div{
        width: 500px;
        margin: 100px auto;
        font-size: 25px;
        color: red;
    }
</style>
<body>
    <!--倒计时牌:今天距离2022年元旦还有:-天-小时-分钟-秒-->
    <div></div>
    <script>
        function showTime(){
            var date1 = new Date('2022-01-01 00:00:00');
            console.log(date1)
            var date2 = new Date();

            var m = date1.getTime()-date2.getTime();
            var times = m/1000;
            var y = parseInt(times/60/60/24/31);
            var d = parseInt(times/60/60/24%30);
            var h = parseInt(times/60/60%24); h= h>=10?h:'0'+h;
            var m = parseInt(times/60%60);m= m>=10?m:'0'+m;
            var s = parseInt(times%60);s= s>=10?s:'0'+s;

            var str = y+'月'+d+'日'+h+':'+m+':'+s
            document.querySelector('div').innerHTML = str;

            setTimeout(showTime,1000)
        }
        window.onload = showTime();
    </script>
</body>

(2)setInterval();按照指定的周期(以毫秒计)来调用函数或执行一段代码;(比较常用)

案例】3s后自动关闭广告 ????????????????????????????????????????????????????????????

<script>
       //实现三秒后关闭广告
    //    var timer = setTimeout(func,3000);//只执行一次
       setInterval(func,3000)   //执行多次
       function func(){
           console.log('广告关闭了...')
       }
</script>

(3)clearTimeout(定时器对象);取消有setTimeout创建的定时器

(4)clearInterval(定时器对象):取消由setInterval创建的定时器

案例】60s内只能发送一次短信 ????

在页面中放一个文本框和一个“发送”按钮。
在文本框中输入手机号码,然后单击“发送”按钮,就可以发送短信。
在按钮单击之后,按钮上的文字会变为“还剩 x 秒再次单击”。? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ??
<body>
    <div>
        <label>
            手机号码:
            <input type="text" name="" id="">
            <button id="btn">发送</button>
        </label>
    </div>
    <script>
        
        //1.获取按钮
        var btn = document.querySelector('#btn')
        var time = 60;//定义剩下的秒数
        btn.addEventListener('click',function(){
           
            btn.disabled = true;
            //此处添加倒计时按钮
            //2.创建定时器,:setInveral
        var timer = setInterval(function(){
            if(time == 0){
                //2.1清除定时器
                clearInterval(timer);
                //2.1让按钮可用
                btn.disabled = false;
                //2.3让按钮的文字变成发送
                btn.innerHTML = '重新发送';
                time = 60;
            }else{
                btn.innerHTML = '还剩'+time+'秒';
                time--;
            }
        },1000)
        })
        
    </script>
</body>

??

setTimeout和setInterval的区别:

setTimeout:执行一次

setInterval:重复执行

二、单线程:js程序是单线程的 ,同一个时间只能做一件事

同步所谓同步,就是前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。

console.log(1);  //先输出了1、2
setTimeout(function () {
??console.log(3); //,等待5秒后输出3
},?5000);
console.log(2);

异步所谓异步,就是在做一件事件的同时,可以去处理其他的事情。

3、js执行机制:执行栈、任务队列

console.log(1);
setTimeout(function () {
  console.log(3);
}, 0);
for (var i = 0, str = ''; i < 900000; i++) {
  str += i;	 // 利用字符串拼接运算拖慢执行时间
}
console.log(2);

三、location对象:地址对象

1、URL:统一资源定位符(网址)

(1)protocol:网络协议。http、https、ftp、milto

(2)host:服务器主机名 (如www.baidu.com)

? ? ? ? 本地机的名称:localhost? ? ? ? ---->127.0.0.1

(3)port:端口号。有65535个端口号,每个端口号对应一个服务

? ? ? ? 0~1023:都被系统使用,有特定的服务;

? ? ? ? 1024~65535:用户可以使用

(4)path:页面文件的路径

? ? ? ? http://www.souhu.com

? (5)query:查询参数。传递给服务器的参数。参数之间用‘&‘

分隔,参数和服务器地址之间用’?’分隔

http://localhost:8080/getData?id = "1001"&name = "张三

2、常用属性:

(1)location.search:返回当前URL的查询部分,即”?“之后的部分

(2)location.hash:返回URL中‘#’开始的内容

(3)location.host:返回URL的主机名和端口号

(4)location.histname:返回URL的主机名

(5)location.href:返回完整的URL

<body>
    <button>去百度</button>
    <script>
        var btn = document.querySelector('button')
        btn.addEventListener('click',function(){
            location.href = "http://www.baidu.com"
            // document.location = "http://www.baidu.com"
        })
    </script>
</body>

(6)location.pathname:返回路径名?

(7)location.port:返回URL的端口号

(8)location.protocol:返回URL的网络协议

decodeURIComponent():是js中的解码函数

案例获取URL参数 ??

创建login.html登录页面

<form?action="index.html">
??用户名:?<input?type="text"?name="uname">
??<input?type="submit"?value="登录">
</form>

创建index.html首页

console.log(location.search);? //?结果为:?uname=andy
????//?1. 去掉search中的问号“?”
????var?params?=?location.search.substr(1);
????console.log(params); //?结果为:uname=andy
????//?2. 把字符串分割为数组
????var?arr?=?params.split('=');
????console.log(arr);?//?结果为:["uname",?"andy"]
????var?div?=?document.querySelector('div');
????//?3. 把数据写入div中
????div.innerHTML?=?arr[1]?+?'欢迎您';

3、常用方法四、navigator对象:用于导航

1、常用属性:

2、常用方法:

常用方法javaEnabled()指定是否在浏览器中启用Java

五、history对象:记录访问的历史

1、常用属性:

history.length属性返回历史列表中的网址数

2、常用方法:

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:39:54  更:2021-12-02 16:40:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:07:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码