BOM浏览器对象模型

BOM(Browser Object Model) 浏览器对象模型 操作浏览器api和接口

1.打开链接

    返回一个窗口对象                                                                                                                              w =  window.open(url,"_blank",'width=300px,height=300px');

    新窗口宽高
    w.resizeTo(400,400);

    新窗口位置
    w.moveTo(100,100);

    关闭窗口
    w.close();

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <button>打开页面</button>
  <button>关闭窗口</button>
  <script>
    var btn1 = document.querySelector('button');
    var btn2 = document.getElementsByTagName('button')[1];
    btn1.onclick = function(){
      // 打开一个链接  一个页面
     w =  window.open('https://baidu.com','_blank','width=600px,height=600px');
     console.log(w,'窗口对象');
      // 控制新窗口打开宽高 
     w.resizeTo(400,400);
    //  控制窗口打开位置 x y 
     w.moveTo(200,200);
    }
    btn2.onclick = function(){
      // 关闭窗口
      w.close();
      
    }
  </script>
</body>
</html>

浏览器运行结果如下:

 

2.系统对话框

    alert() 弹框
    confirm() 确认框 
    prompt() 提示输入框

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 弹框 
    alert('我是一个弹框');
    // 确认框 
    var res = confirm('您确定吗');//返回值true或者false
    console.log(res);
    if(res){
      console.log('删除成功')
    }else{
      console.log('取消删除')
    }
    // 提示框
    var res = prompt('请输入您的姓名');
    console.log(res);
  </script>
</body>
</html>

浏览器运行结果如下:

 

3.location对象和history对象

   加载当前文档相关信息 提供导航功能

      window.location document.location  location 单独使用
      host 
      hostname
      port
      protocol 
      pathname
    1.assign() 打开页面 url  新增一条历史记录
    2.replace(url) 替换页面  不会新增历史记录
    3.reload() 刷新页面 true/false

    length 访问过得网址列表数
    forward() 前进一个历史记录
    back()  后退一个历史记录
    go()  前进或者后退 number

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <button>跳转页面</button>
  <button>替换页面</button>
  <button>刷新页面</button>
  <button>前进下一个历史记录栈页面</button>
  <script>
    // console.log(location,'加载当前窗口文档相关信息,提供导航功能');
    // console.log(location === window.location);
    // console.log(location === document.location);
    // console.log(window.location === document.location);
    var btn1 = document.body.children[0];
    var btn2 = document.body.children[1];
    var btn3 = document.body.children[2];
    var btn4 = document.body.children[3];
    btn1.onclick = function(){
      // 页面跳转 并且会在浏览器产生一条历史记录
      location.assign('./4-网易严选滚动.html')
    }
    btn2.onclick = function(){
      // 页面替换 将页面替换为页面 不会在浏览器产生一条历史记录
      location.replace('./4-网易严选滚动.html')
    }
    btn3.onclick = function(){
      // 刷新页面 true/false true表示请求服务器资源 false请求浏览器缓存
      location.reload(true);
    }
    btn4.onclick = function(){
      // 前进到下一个历史记录栈
      // history.forward();
      // 前进一个下一个历史记录页面
      history.go(1)
    }
    console.log(history.length);
  </script>
</body>
</html>

浏览器运行结果如下:

 

4.超时调用和间歇调用

    超时调用:超过等待得时间函数执行一次 返回值返回id
    id = setTimeout(function(){

    },wait) 
    clearTimeout(id)
    间歇调用:每隔一段时间函数执行一次 返回值返回id
    id =  setInterval(function(){

    },time)
    clearInterval(id)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div></div>
  <script>
    /**
     * 超时调用 
     * 超过wait时间后执行函数一次  wait单位毫秒 
     * setTimeout(函数,wait) 定时器
     * 返回一个定时器id 
     * 取消超时调用 clearTimeout(id)
    */
  //  var id = setTimeout(function(){
  //   console.log('我是超时调用')
  //  },2000);
  // //  取消超时调用
  //  clearTimeout(id);
  //  console.log(id);


  /**
   * 间歇调用 setInterVal 
   * 参数:函数 间隔时间
   * 每隔间隔时间函数执行一次 返回值是id
   * 取消间歇调用clearInterval(id)
  */
  // var id = setInterval(function(){
  //   console.log('我被调用了')
  // },1000);
  // // 取消间歇调用
  // clearInterval(id);
  // console.log(id);
  var div = document.querySelector('div');
  div.innerHTML = new Date().toLocaleString();
  setInterval(function(){
    div.innerHTML = new Date().toLocaleString()
  },1000)
  </script>
</body>
</html>

浏览器运行结果如下:

 

5.ajax 

     异步JavaScript和XML,结合HTML、XML、CSS和服务器进行通信和数据交互得一种方法
            可以动态更新局部数据不需要刷新页面。需要连接自己的服务器接口

  5.1get有参 无参
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.11.2/qs.min.js"></script>
</head>
<body>
  <script>
    // 1.创建XMLHttpRequest请求实例
    var xhr = new XMLHttpRequest();
    var params = {
      page:1,
      pageSize:10
    };
    // 将js对象转为查询字符串 ?page=1&pageSize=10
    var parseObj = Qs.stringify(params);
    // console.log(parseObj);
    // 2.打开一个连接
    xhr.open('get','自己的服务器IP地址:端口号/index/article/pageQuery?'+parseObj);
    // 3.发送请求
    xhr.send();
    // 4.监听响应
    xhr.onreadystatechange = function(){
      if(xhr.readyState ===4 && xhr.status===200){
        // console.log(xhr.response);
        var res = JSON.parse(xhr.response);
        // console.log(res);
        res.data.list.forEach(function(item){
          // item---> {title:"",content:""}
          var dt = document.createElement('dt');
          var dd = document.createElement('dd');
          dt.innerHTML = item.title;
          dd.innerHTML = item.content;
          document.body.appendChild(dt);
          document.body.appendChild(dd);
        })
      }
    }
  </script>
</body>
</html>

浏览器运行结果如下:


  5.2post 有参 参数格式
        5.2.1 post-json请求
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 1.创建XMLHttpRequest请求实例
    var xhr = new XMLHttpRequest();
    var form = {
      username:'admin2',
      password:123321
    }
    // 2.打开一个连接
    xhr.open('post','自己的服务器地址');
    // 设置请求头数据格式为json格式
    xhr.setRequestHeader('Content-Type','application/json')
    // 3.发送请求
    xhr.send(JSON.stringify(form));
    // 4.监听响应
    xhr.onreadystatechange = function(){
      if(xhr.readyState ===4 && xhr.status===200){
        console.log(JSON.parse(xhr.response))
      }
    }
  </script>
</body>
</html>

控制台运行结果如下:

        5.2.2 post-表单请求
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.11.2/qs.min.js"></script>
</head>
<body>
  <script>
    // 1.创建XMLHttpRequest请求实例
    var xhr = new XMLHttpRequest();
    // 2.打开一个连接
    xhr.open('post','自己的服务器地址');
    var params = {
      username:"狗蛋123",
      password:123321
    }
    // 将js对象转为表单格式数据(查询字符串)传给后端 
    var formObj = Qs.stringify(params);
    // 设置请求头格式为表单格式 
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // 3.发送请求
    xhr.send(formObj);
    // 4.监听响应
    xhr.onreadystatechange = function(){
      if(xhr.readyState ===4 && xhr.status===200){
        console.log(JSON.parse(xhr.response))
      }
    }
  </script>
</body>
</html>

控制台运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/204993.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-创建型模式之原型、建造者设计模式

文章目录 七、原型模式八、建造者模式 七、原型模式 原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当直…

iptables防火墙之SNAT与DNAT

1. SNAT SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由) SNAT原理:源地址转换&#xff0c;根据指定条件修改数据包的源IP地址&#xff0c;通常被叫做源映射。 数据包从内网发送到公网时&#xff0c;SNAT会把数据包的源IP由私网IP…

价格战的核心使命是重新分配利益-车市价格战洞察报告2023版PDF

获取来源&#xff1a;公众号「营销人星球」 2021-2022年&#xff0c;中国乘用车市场每辆平均优惠1.5-2万元&#xff0c;多数车企咬牙坚持&#xff0c;盼望着疫情之后的2023年可以春暖花开&#xff0c;但事与愿违&#xff0c;2023年季度末每辆终端优惠突破2万元&#xff0c;三季…

人工智能在内容相关性Content Relevance方面的应用

许多公司在向客户和潜在客户提供内容服务时犯了一个错误&#xff0c;即定制性不足&#xff0c;内容过于通用&#xff0c;可能与每位目标客户都不相关。谈及内容相关性时&#xff0c;人们希望获得有用的信息和问题解决方法&#xff0c;或具有娱乐性和参与性的内容。 为客户提供…

【模电】基本共射放大电路的组成及各元件的作用

基本共射放大电路的组成及各元件的作用 下图所示为基本共射放大电路&#xff0c;晶体管是起放大作用的核心元件。输入信号 U ˙ i \.{U}\tiny i U˙i为正弦波电压。 当 u i 0 {u\tiny i}0 ui0时&#xff0c;称放大电路处于静态。在输入回路中&#xff0c;基极电源 V B B V\tin…

单体架构demo

idea 新建maven项目 1、外层pom.xml 2、jar 包pom.xml 3、主要pom.xml 这个打包插件放在有main 启动模块中 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifact…

软著项目推荐 深度学习 植物识别算法系统

文章目录 0 前言2 相关技术2.1 VGG-Net模型2.2 VGG-Net在植物识别的优势(1) 卷积核&#xff0c;池化核大小固定(2) 特征提取更全面(3) 网络训练误差收敛速度较快 3 VGG-Net的搭建3.1 Tornado简介(1) 优势(2) 关键代码 4 Inception V3 神经网络4.1 网络结构 5 开始训练5.1 数据集…

玩转大数据:3-Hadoop家族的力量与挑战

引言 Hadoop作为一个强大的大数据处理框架&#xff0c;以其分布式计算和存储能力在业界备受关注。然而&#xff0c;Hadoop在应用场景、适用范围、社区支持以及后续持续发展等方面也面临着一些挑战。本文将围绕Hadoop的生态应用&#xff0c;以及来自其他生态的挑战&#xff0c;…

浅聊代理(应用部署)

以前很少接触过项目的上线部署&#xff0c; 我对前后端交互的认知还停留在前端一个请求 对应后端一个API 比如后端提供: /api/backend/categories -GET 前端则通过使用ajax或者axios组件去构建http请求&#xff0c; 发送到: https://host:port/api/backend/categories -GET 一、…

华为云之云桌面Workspace的使用体验

华为云之云桌面Workspace的使用体验 一、云桌面Workspace介绍1.云桌面简介2.云桌面特点3. 云桌面应用场景①远程移动办公②协同办公③安全办公④公用终端⑤图形制作渲染 二、本次实践介绍1. 本次实践目的2. 本次实践环境 三、购买云桌面1. 进入华为云的云桌面购买界面2. 选择购…

《C++PrimerPlus》第9章 内存模型和名称空间

9.1 单独编译 Visual Studio中新建头文件和源代码 通过解决方案资源管理器&#xff0c;如图所示&#xff1a; 分成三部分的程序&#xff08;直角坐标转换为极坐标&#xff09; 头文件coordin.h #ifndef __COORDIN_H__ // 如果没有被定义过 #define __COORDIN_H__struct pola…

人工智能概论

一、关键技术 人工智能包含了七项关键技术: 1. 机器学习: 机器学习是研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知识结构使之不断改善自身的性能&#xff0c;是人工智能技术的核心。 从学习模式划分&#xff0c;分…

JMeter从入门到精通

1、 jmeter的介绍 jmeter也是一款接口测试工具&#xff0c;由java语言开发的&#xff0c;主要进行性能测试。 2、jmeter安装 jmeter官网下载链接&#xff1a; https://jmeter.apache.org/download_jmeter.cgi &#xff0c;查看是否安装成功【jmeter -v】 下载 java jdk1.8&…

漏洞复现--致远 M3 反序列化 mobile_portal RCE

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

应用程序APP制作用Vue3CreateApp打包有什么优势?有哪些好处?

在当代的前端开发领域&#xff0c;Vue.js作为一个领先的JavaScript框架&#xff0c;一直处于技术革新和发展的前沿。Vue3作为该框架的最新版本&#xff0c;带来了更多的新特性和优化。在这些新特性中&#xff0c;createApp方法是一个非常值得关注的变化。对于开发者而言&#x…

redis相关题

1 什么是Redis Redis(Remote Dictionary Server) 是⼀个使⽤ C 语⾔编写的&#xff0c;开源的&#xff08;BSD许可&#xff09;⾼性能⾮关系型&#xff08;NoSQL&#xff09;的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串&#xff0c;…

石油化工隐蔽设备AR可视化检修协助系统让新手也能轻松上岗

随着城市基础设施建设的不断推进&#xff0c;地下管线巡检工作的重要性日益凸显。传统的巡检方法已无法满足现代都市的高效运营需求。此时&#xff0c;地下管线AR智慧巡检远程协助系统应运而生&#xff0c;凭借其独特的特点与优势&#xff0c;为城市地下管线巡检带来了革命性的…

vue中的插槽用法(动态插槽)

vue中提供了一种通讯方式叫插槽>分为&#xff1a;默认插槽、具名插槽(作用域插槽) 1. 当一个组件有不确定的结构时, 就需要使用slot技术了 2. 注意: 插槽内容是在父组件中编译后, 再传递给子组件 3. 如果决定结构的数据在父组件, 那用默认slot或具名slot (1) 当只有一个不…

易石无代码开发:电商平台连接CRM与客服系统,实现营销自动化

易石无代码开发的优势 易石软件以其强大的无代码开发平台&#xff0c;为电商企业提供了一种全新的业务集成手段。在激烈的市场竞争中&#xff0c;电商平台必须不断优化其运营效率和客户服务质量。易石无需复杂的API开发&#xff0c;通过简单的配置就能实现电商平台与CRM、客服…

openGauss学习笔记-135 openGauss 数据库运维-例行维护-检查openGauss健康状态

文章目录 openGauss学习笔记-135 openGauss 数据库运维-例行维护-检查openGauss健康状态135.1 检查办法135.2 操作步骤135.3 异常处理 openGauss学习笔记-135 openGauss 数据库运维-例行维护-检查openGauss健康状态 135.1 检查办法 通过openGauss提供的gs_check工具可以开展o…