博客
关于我
js——BOM操作知多少?
阅读量:743 次
发布时间:2019-03-23

本文共 3142 字,大约阅读时间需要 10 分钟。

BOM操作

引言

浏览器对象模型(Browser Object Model, BOM)是Web开发中客户浏览器管理的重要工具。尽管BOM没有被标准化,但主流浏览器都支持其基本规则,并被包含在HTML5规范中。以下是我们将探讨的主题及其重点。

主要学习点

本文将围绕以下内容展开:

  • 使用window对象和框架集
  • 使用navigatorlocationscreen对象
  • 使用history对象
  • 除此之外,还将探讨以下内容:

    • 使用window对象进行窗口操作
    • 利用定时器进行任务调度
    • 控制窗口大小和位置
    • 检测浏览器类型和操作系统信息
    • location对象history对象的交互
    • 获取客户端屏幕信息
    • 动态生成文档内容

    接下来,我们将从window对象开始,逐步深入探讨每个主题。


    window对象

    window对象是客户端浏览器对象模型的基类,也是全局对象。一个window对象代表的是浏览器窗口。对于包含框架的网页,每个框架都会创建一个独立的window对象

    全局作用域

    在客户端浏览器中,window对象提供了全局作用域。所有全局变量都会被解析为window对象的属性。例如:

    var a = "window.a";function f() {}console.log(window.a); // window.a

    在全局作用域中,使用delete运算符可以删除属性,但不能删除变量。


    访问客户端对象

    使用window对象可以访问其他客户端浏览器对象。这些对象构成了BOM,具体包括:

    • window:客户端的顶层对象。
    • navigator:包含浏览器信息、用户代理字符串等。
    • screen:包含客户端屏幕信息。
    • history:存储浏览器访问记录。
    • location:存储当前文档的URL信息。
    • document:操作整个HTML文档。

    系统对话框

    window对象 提供了三种用于人机交互的方法:

  • alert():显示确定提示框。
  • confirm():显示选择提示框,返回布尔值。
  • prompt():显示输入提示框。
  • 这些方法主要用于测试和简单对话框设计。

    var user = prompt("请输入你的用户名");if (!!user) {    var ok = confirm("你输入的用户名为:" + user + "\n请确认。");    if (ok) {        alert("欢迎你 " + user);    } else {        user = prompt("请重新输入你的用户名:");        alert("欢迎你 " + user);    }} else {    user = prompt("请输入你的用户名:");}

    这些方法只能显示文本内容,忽略HTML格式。


    窗口操作

    可以通过window.open()打开新窗口,并通过window.close()关闭窗口。window.opener属性可以引用打开该窗口的原始窗口。

    var win = window.open();win.document.write("

    这是新打开的窗口

    ");win.focus();win.opener.document.write("

    这是原来的窗口

    ");console.log(win.opener == window);

    定时器

    window对象 包括四个定时器相关方法:

    • setInterval():周期性执行代码。
    • setTimeout():延迟执行代码。
    • clearInterval():取消定时器。
    • clearTimeout():取消延迟执行。

    例如:

    function jump() {    window.resizeTo(200, 200);    var x = Math.random() * 1024;    var y = Math.random() * 760;    window.moveTo(x, y);}var timer = window.setInterval(jump, 1000);

    navigator对象 存储浏览器信息,主要用于检测浏览器类型和版本。可以通过userAgent属性获取完整的用户代理字符串。

    var ua = navigator.userAgent;console.log(ua); // 示例输出:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36

    location对象

    location对象 存储当前文档的URL信息。其主要属性包括:

    • href:当前文档的完整URL。
    • protocol:协议部分(如http:)。
    • host:主机名和端口(如www.mysite.cn:80)。
    • pathname:当前路径(如news/index.asp)。
    • search:查询字符串。

    可以通过设置location.href修改当前文档的URL。

    location.href = "#top"; // 修改当前文档的锚点。

    location对象还支持reload()(重新加载当前页面)和replace()(替换当前历史记录)方法。


    history对象

    history对象 存储浏览器访问历史。HTML5新增的pushState()replaceState()方法允许程序matically操作历史记录。

    history.pushState({    state: "page2",    title: "bar.html"}, "bar.html");

    可以通过history.state读取当前状态,并通过popstate事件处理状态变化。


    screen对象

    screen对象 提供屏幕信息,用于探测客户端硬件配置。可以用来优化程序显示效果。

    例如,实现居中显示新窗口:

    function center(url) {    var w = screen.availWidth / 2;    var h = screen.availHeight / 2;    var left = (screen.availWidth - w) / 2;    var top = (screen.availHeight - h) / 2;    var pos = "top=" + top + ",left=" + left + ",width=" + w + ",height=" + h;    var win = window.open(url, "url", pos);    win.focus();}center("https://www.baidu.com");

    动态生成文档内容

    使用document.write()writeln()方法可以在浏览器解析时动态生成文档内容。

    document.write("

    段落文本

    ");document.write("

    文档解析时动态生成的内容

    ");function f() { document.write("

    调用事件处理函数时动态生成的内容

    ");}

    注意事项

    1.所有内容仅供技术参考,不相关内容请忽略。2.某些方法因浏览器差异可能存在差异,建议结合实际测试。3.使用window.open()创建的新窗口,opener属性指向原始窗口。

    如需进一步探讨某些内容,请关注相应API文档。

    转载地址:http://klszk.baihongyu.com/

    你可能感兴趣的文章
    1110 Complete Binary Tree (25 point(s))
    查看>>
    541【毕设课设】基于单片机电阻电感电容RLC测量仪系统
    查看>>
    基于8086交通灯系统仿真设计(微机原理设计资料)
    查看>>
    解读域名管理之:域名注册机构介绍
    查看>>
    找中位数
    查看>>
    这些运维发展方向及系统运维技能都不了解,怎么能吃透Linux??
    查看>>
    自动化测试——UI自动化测试的痛点
    查看>>
    如何将萌推商品主图、属性图、详情图批量保存到电脑的方法
    查看>>
    2021年N1叉车司机模拟考试及N1叉车司机考试软件
    查看>>
    【奇淫巧技】Java动态代理(JDK和cglib)
    查看>>
    2021-05-11 现代操作系统 《现代操作系统 第4版》第3章 内存管理——总结(分段,分页,段页)(转载)
    查看>>
    【Stimulsoft Reports.Net教程】使用DesignerFx
    查看>>
    攻防世界 Pwn 新手
    查看>>
    mybtis-plus 出现 Wrong namespace
    查看>>
    升级java11后,maven命令打包报错
    查看>>
    springboot redis key乱码
    查看>>
    Win10禁用自带的笔记本键盘
    查看>>
    insmod模块的几种常见错误
    查看>>
    写时复制集合 —— CopyOnWriteArrayList
    查看>>
    什么是redis的缓存雪崩, 穿透, 击穿?
    查看>>