js第6章BOM案例:打开和关闭窗口、窗口位置和大小、计数器、更改URL、获取URL参数、历史记录跳转、navigator对象和screen对象、红绿灯倒计时

目录

1.打开和关闭窗口

弹出对话框和窗口相关的属性和方法

 弹出对话框和窗口——open()方法

name可选值

specs可选值

 2.窗口位置和大小

 3.计数器

 4.更改URL

5.获取URL参数

 6.历史记录跳转

history对象的属性和方法

无刷新更改URL地址

7. navigator对象和screen对象

8.红绿灯倒计时。


1.打开和关闭窗口

弹出对话框和窗口相关的属性和方法

分类

名称

说明

属性

closed

返回一个布尔值,该值声明了窗口是否已经关闭

name

设置或返回存放窗口名称的一个字符串

opener

返回对创建该窗口的window对象的引用

parent

返回当前窗口的父窗口

self

对当前窗口的引用,等价于window属性

top

返回最顶层的父窗口

方法

alert()

显示带有一段消息和一个确认按钮的警告框

confirm()

显示带有一段消息以及确认按钮和取消按钮的对话框

方法

prompt()

显示可提示用户输入的对话框

open()

打开一个新的浏览器窗口或查找一个已命名的窗口

close()

关闭浏览器窗口

focus()

把键盘焦点给予一个窗口

print()

打印当前窗口的内容

scrollBy()

按照指定的像素值来滚动内容

scrollTo()

把内容滚动到指定的坐标

 弹出对话框和窗口——open()方法

name可选值

name可选值

含义

_blank

URL加载到一个新的窗口,也是默认值

_parent

URL加载到父框架

_self

URL替换当前页面

_top

URL替换任何可加载的框架集

name

窗口名称

specs可选值

specs可选参数

说明

height

Number

窗口的高度,最小值为100

left

Number

该窗口的左侧位置

location

yes|no|1|0

是否显示地址字段,默认值是yes

menubar

yes|no|1|0

是否显示菜单栏,默认值是yes

resizable

yes|no|1|0

是否可调整窗口大小,默认值是yes

scrollbars

yes|no|1|0

是否显示滚动条,默认值是yes

status

yes|no|1|0

是否要添加一个状态栏,默认值是yes

titlebar

yes|no|1|0

是否显示标题栏.被忽略,除非调用HTML应用程序或一个值得信赖的对话框,默认值是yes

toolbar

yes|no|1|0

是否显示浏览器工具栏,默认值是yes

width

Number

窗口的宽度,最小值为100

<body>
    <p><input type="button" value="打开窗口" onclick="openWin()"></p>
    <p><input type="button" value="关闭窗口" onclick="closeWin()"></p>
    <p><input type="button" value="检测窗口是否关闭" onclick="checkWin()"></p>
    <p id="msg"></p>
    <script>
      var myWindow;
      function openWin() {
        myWindow = window.open('', 'newWin', 'width=400,height=200,left=200');
        myWindow.document.write('<p>窗口名称为:' + myWindow.name + '</p>');
        myWindow.document.write('<p>当前窗口的父窗口地址:' + window.parent.location + '</p>');
      }
      function closeWin() {
        myWindow.close();
      }
      function checkWin() {
        if (myWindow) {
          var str = myWindow.closed ? '窗口已关闭!' : '窗口未关闭!';
        } else {
          var str = '窗口没有被打开!';
        }
        document.getElementById('msg').innerHTML = str;
      }
   </script>
</body>

运行效果:

 

 

 2.窗口位置和大小

分类

名称

说明

属性

screenLeft

返回相对于屏幕窗口的x坐标(Firefox不支持)

screenTop

返回相对于屏幕窗口的y坐标(Firefox不支持)

screenX

返回相对于屏幕窗口的x坐标(IE8不支持)

screenY

返回相对于屏幕窗口的y坐标(IE8不支持)

innerHeight

返回窗口的文档显示区的高度(IE8不支持)

innerWidth

返回窗口的文档显示区的宽度(IE8不支持)

outerHeight

返回窗口的外部高度,包含工具条与滚动条(IE8不支持)

outerWidth

返回窗口的外部宽度,包含工具条与滚动条(IE8不支持)

方法

moveBy()

将窗口移动到相对的位置

moveTo()

将窗口移动到指定的位置

resizeBy()

将窗口大小调整到相对的宽度和高度

resizeTo()

将窗口大小调整到指定的宽度和高度

<body>
    <input type="button" value="打开窗口" onclick="openWin()">
    <input type="button" value="调整窗口位置和大小" onclick="changeWin()">
    <script>
      var myWindow;
      function openWin() {
        myWindow = window.open('', 'newWin', 'width=250,height=300');
        getPosSize();                   // 获取窗口信息
      }
      function changeWin() {
        myWindow.moveBy(250, 250);      // 将newWin窗口下移250像素,右移250像素
        myWindow.focus();               // 获取移动后newWin窗口的焦点
        myWindow.resizeTo(500, 350);    // 修改newWin窗口的宽度为500,高度为350
        getPosSize();                   // 获取窗口信息
      }
      function getPosSize() {
        // 获取相对于屏幕窗口的坐标
        var x = myWindow.screenLeft, y = myWindow.screenTop;
        // 获取窗口和文档的高度和宽度
        var inH = myWindow.innerHeight, inW = myWindow.innerWidth;
        var outH = myWindow.outerHeight, outW = myWindow.outerWidth;
        myWindow.document.write('<p>相对屏幕窗口的坐标:(' + x + ',' + y + ')</p>');
        myWindow.document.write('<p>文档的高度和宽度:' + inH + ',' + inW + '</p>');
        myWindow.document.write('<p>窗口的高度和宽度:' + outH + ',' + outW + '</p><hr>');
      }
   </script>
</body>

运行效果:

 

 3.计数器

方法

说明

setTimeout()

在指定的毫秒数后调用函数或执行一段代码

setInterval()

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

clearTimeout()

取消由setTimeout()方法设置的定时器

clearInterval()

取消由setInterval()设置的定时器

setTimeout()和setInterval()方法区别: 相同点:都可以在一个固定时间段内执行JavaScript程序代码。 不同点:setTimeout()只执行一次代码,setInterval()会在指定的时间后,自动重复执行代码。 

<body>
    <input type="button" value="开始计数" onclick="startCount()">
    <input id="num" type="text">
    <input type="button" value="停止计数" onclick="stopCount()">
    <script>
      var timer = null, c = 0;
      function timedCount() {       // 在文本框中显示数据
        document.getElementById('num').value = c;
        ++c;                        // 显示数据加1
      }
      function startCount() {       // 开始间歇调用
        timer = setInterval(timedCount, 1000);
      }
      function stopCount() {        // 清除间歇调用
        clearInterval(timer);
      }
    </script>
</body>

运行效果:

 4.更改URL

名称

说明

assign()

载入一个的文档

reload()

重新载入当前文档

replace()

的文档替换当前文档 

reload()方法的唯一参数,是一个布尔类型值,将其设置为true时,它会绕过缓存,从服务器上重新下载该文档,类似于浏览器中的刷新页面按钮。 

5.获取URL参数

获取URL的指定部分:location.属性名。 设置URL的指定部分:location.属性名 = 值。

location对象的属性

属性

说明

属性

说明

hash

返回一个URL的锚部分

pathname

返回URL的路径名

host

返回一个URL的主机名和端口

port

返回一个URL服务器使用的端口号

hostname

返回URL的主机名

protocol

返回一个URL协议

href

返回完整的URL

<body>
    <input type="button" value="载入新文档" onclick="newPage()">
    <input type="button" value="刷新页面" onclick="freshPage()">
    <p id="time"></p>
    <script>
      // 获取并显示当前页面载入的时间
      var ds = new Date(), d = ds.getDate();
      var t = ds.toLocaleTimeString();
      document.getElementById('time').innerHTML = t;
      // 载入新文档
      function newPage() {
        window.location.assign('http://www.example.com')
      }
      // 刷新文档
      function freshPage() {
        location.reload(true);
      }
    </script>
</body>

运行效果:

 6.历史记录跳转

history对象的属性和方法

分类

名称

说明

属性

length

返回历史列表中的网址数

方法

back()

加载history列表中的前一个URL

forward()

加载history列表中的下一个URL

go()

加载history列表中的某个具体页面

<body>
    <input type="button" value="前进" onclick="goForward()">
    <input type="button" value="新网页" onclick="newPage()">
    <script>
      function newPage() {      // 打开一个新的文档
        window.location.assign('show.html');
      }
      function goForward() {    // 前进
        history.go(1);
      }
    </script>
</body>

show.html

<body>
    <input type="button" value="后退" onclick="goBack()">
    <script>
      function goBack() {
        history.go(-1);
      }
    </script>
</body>

运行效果:

 

无刷新更改URL地址

pushState()方法会改变浏览器的历史列表中记录的数量。

replaceState()方法仅用于修改历史记录,历史记录列表的数量不变,与location.replace()方法的功能类似。 

7. navigator对象和screen对象

navigator对象提供了有关浏览器的信息。

navigator对象的属性和方法

分类

名称

说明

属性

appCodeName

返回浏览器的内部名称

appName

返回浏览器的名称

appVersion

返回浏览器的平台和版本信息

cookieEnabled

返回指明浏览器中是否启用cookie的布尔值

platform

返回运行浏览器的操作系统平台

userAgent

返回由客户端发送服务器的User-Agent头部的值

方法

javaEnabled()

指定是否在浏览器中启用Java

screen对象用于返回当前渲染窗口中与屏幕相关的属性信息,如屏幕的宽度和高度等。 

 screen对象的属性和方法

名称

说明

height

返回整个屏幕的高

width

返回整个屏幕的宽

availHeight

返回浏览器窗口在屏幕上可占用的垂直空间

availWidth

返回浏览器窗口在屏幕上可占用的水平空间

colorDepth

返回屏幕的颜色深度

pixelDepth

返回屏幕的位深度/色彩深度

8.红绿灯倒计时。

现实生活中,为保证行人和车辆安全有序地通行,交叉路口都会设置交通信号灯。横向三色交通信号灯的亮灯顺序一般为“绿→黄→红→绿”依次循环。其中,亮灯时长需根据路口的实际情况等因素来考虑设置。例如,将某一个十字路口的交通信号灯每分钟红灯亮设置为30秒,绿灯亮设置为35秒,黄灯亮设置为5秒。

<style>
      .box{width:250px;height:52px;padding:15px 30px;border:2px solid #ccc;border-radius:16px;margin:0 auto;}
      .box .count{width:60px;color:#666;font-size:280%;line-height:50px;padding-left:6px;margin-left:5px;border:1px solid #fff}
      .box div{margin-left:5px;float:left;width:50px;height:50px;border-radius:50px;border:1px solid #666;}
      .gray{background-color:#eee;}
      .red{background-color:red;}
      .yellow{background-color:yellow;}
      .green{background-color:#26ff00;}
</style>
<body>
    <div class="box">
      <div id="red"></div>
      <div id="yellow"></div>
      <div id="green"></div>
      <div class="count" id="count"></div>
    </div>
    <script>
      // 获取红、黄、绿灯以及倒计时的元素对象
      var lamp = {
        red: {
          obj: document.getElementById('red'),
          timeout: 30,
          style: ['red', 'gray', 'gray'],
          next: 'green'
        },
        yellow: {
          obj: document.getElementById('yellow'),
          timeout: 5,
          style: ['gray', 'yellow', 'gray'],
          next: 'red'
        },
        green: {
          obj: document.getElementById('green'),
          timeout: 35,
          style: ['gray', 'gray', 'green'],
          next: 'yellow'
        },
        changeStyle(style) {
          this.red.obj.className = style[0];
          this.yellow.obj.className = style[1];
          this.green.obj.className = style[2];
        }
      };
      var count = {
        obj: document.getElementById('count'),
        change: function(num) {
          this.obj.innerHTML = (num < 10) ? ('0' + num) : num;
        }
      };
      var now = lamp.green;
      var timeout = now.timeout;
      lamp.changeStyle(now.style);
      count.change(timeout);
      setInterval(function() {
        if (--timeout <= 0) {
          now = lamp[now.next];
          timeout = now.timeout;
          lamp.changeStyle(now.style);
        }
        count.change(timeout);
      }, 1000);
    </script>
</body>

运行效果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条小橘猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值