小言_互联网的博客

讲给后台程序员看的前端系列教程(36)——BOM

223人阅读  评论(0)

C语言自学完备手册(33篇)

Android多分辨率适配框架

HTML5前端开发实战系列教程

MySQL数据库实操教程(35篇图文版)

推翻自己和过往——自定义View系列教程(10篇)

走出思维困境,踏上精进之路——Android开发进阶精华录

讲给Android程序员看的前端系列教程(40集免费视频教程+源码)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

BOM概述

在实际开发中,JavaScript经常需要操作浏览器窗口及窗口上的控件,实现用户和页面的动态交互。为此,浏览器提供了一系列内置对象,统称为浏览器对象;各内置对象之间按照层次组织起来的模型统称为浏览器对象模型Browser Object Model简称BOM,其架构如下图所示:

在BOM架构中可看出:window对象是BOM的顶层对象,它代表浏览器的窗口。所以,在HTML中所有全局JavaScript 对象(函数和变量)都自动成为 window 对象的成员。也就是说:

  • 全局变量是 window 对象的属性。
  • 全局函数是 window 对象的方法。

来看一个我们之前常写的例子:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
  <head>
    <meta charset="UTF-8">
    <title>window</title>
  </head>
  <body>
    <script type="text/javascript">
		var name="本文作者:谷哥的小弟";
		var blog="博客地址:https://blog.csdn.net/lfdfhl";
		function printInfo(message){
			alert(message);
		}
		document.write(name+"<br />");
		document.write(blog+"<br />");
		printInfo("Hello JavaScript");
    </script>
  </body>
</html>

结果如下:

实际上,它等效于如下代码:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
  <head>
    <meta charset="UTF-8">
    <title>window</title>
  </head>
  <body>
    <script type="text/javascript">
		var name="本文作者:谷哥的小弟";
		var blog="博客地址:https://blog.csdn.net/lfdfhl";
		function printInfo(message){
			window.alert(message);
		}
		window.document.write(window.name+"<br />");
		window.document.write(window.blog+"<br />");
		window.printInfo("Hello JavaScript");
    </script>
  </body>
</html>

window对象常用属性

window对象常用属性如下:

在此,介绍window中的核心属性。

location

location(地址栏对象)用于获取当前浏览器中URL地址栏内的相关数据并更改当前用户在浏览器中访问的URL,实现新文档的载入、重载以及替换等功能。

示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
	<head>
		<meta charset="UTF-8">
		<title>location</title>
	</head>
	<body>
		<input type="button" value="页面跳转" onclick="openNewPage()">
		<input type="button" value="刷新页面" onclick="freshCurrentPage()">
		<p id="time"></p>
		<script>
			var date = new Date();
			var year = date.getFullYear();
			var month = date.getMonth() + 1;
			var day = date.getDate();
			var hour = date.getHours();
			var minute = date.getMinutes();
			var second = date.getSeconds();
			var dayOfWeek = date.getDay();
			var time = year + "年" + month + "月" + day + "日" + hour + ":" + minute + ":" + second + " 星期" + dayOfWeek;
			document.getElementById('time').innerHTML = time;
			//页面跳转
			function openNewPage() {
				window.location.assign('http://www.ifeng.com/')
			}
			//刷新页面
			function freshCurrentPage() {
				location.reload(true);
			}
		</script>
	</body>
</html>

结果如下:

history

history(历史对象)用于记录浏览器的访问历史记录并可实现网页的前进、后退等常规功能。

示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
  <head>
    <meta charset="UTF-8">
    <title>history</title>
  </head>
  <body>
    <input type="button" value="打开新网页" onclick="openNewPage()">
	<input type="button" value="前  进" onclick="goForward()">
    <script>
      function openNewPage() { 
        window.location.assign('46.html');
      }
      function goForward() {
        history.forward();
      }
    </script>
  </body>
</html>
<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
  <head>
    <meta charset="UTF-8">
    <title>history</title>
  </head>
  <body>
   <input type="button" value="后退" onclick="goBack()">
    <script>
      function goBack() {
        history.back();
      }
    </script>
  </body>
</html>

结果如下:

navigator

navigator(浏览器对象)用于获取浏览器自身的相关数据,如浏览器的名称、版本等。

示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
  <head>
    <meta charset="UTF-8">
    <title>navigator </title>
  </head>
  <body>
    <script type="text/javascript">
		document.write("浏览器名称:"+navigator.appName+"<br />");
		document.write("浏览器平台与版本信息:"+navigator.appVersion+"<br />");
		document.write("操作系统平台:"+navigator.platform+"<br />");
		document.write("是否启用Cookie:"+navigator.cookieEnabled+"<br />");
		document.write("是否启用Java:"+navigator.javaEnabled()+"<br />");
		document.write("userAgent的值为:"+navigator.userAgent+"<br />");
    </script>
  </body>
</html>

结果如下:

当然,您也可以通过遍历的方式获取与浏览器相关的所有信息。

代码如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
	<head>
		<meta charset="UTF-8">
		<title>navigator</title>
	</head>
	<body>
		<script type="text/javascript">
			var nav = window.navigator;
			var info = "本浏览器相关信息如下:<br>";
			for (var propertyName in nav) {
				info = info + propertyName + ":" + window.navigator[propertyName] + "<br>";
			}
			document.writeln(info);
		</script>
	</body>
</html>

结果如下:

Geolocation

在HTML5中新增geolocation属性,利用该属性可以引用Geolocation对象从而实现定位功能。

Geolocation常用方法如下:

  • getCurrentPosition(success, error, options)获取设备当前位置。
    success表示成功得到位置信息时的回调函数,该函数参数为Position对象
    error表示获取位置信息失败时的回调函数,该函数参数为PositionError类型
    options该对象用于设置可选参数;比如:可在该参数中设置超时,缓存等

  • watchPosition(success, error, options)当设备的地理位置发生改变的时候自动调用该方法。该方法的三个参数的含义同getCurrentPosition( )一致,不再赘述。watchPosition( )方法返回一个ID,若需取消监听则可通过 Geolocation.clearWatch( ) 传入该ID实现取消

  • clearWatch(watchID) 终止监听

示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
	<head lang="en">
		<meta charset="UTF-8">
		<title>navigator</title>
	</head>
	<body>
		<script>
			if (navigator.geolocation) {
				navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);
			} else {
				alert("您的浏览器不支持地理定位");
			}

			// 获取地理位置成功的回调函数
			function successCallback(position) {
				var longitude = position.coords.longitude;
				var latitude = position.coords.latitude;
				var timestamp = position.timestamp;
				alert("timestamp=" + timestamp + ",经度=" + longitude + ",纬度=" + latitude);
			}

			// 获取地理位置失败的回调函数
			function errorCallback(error) {
				alert(error.code + " " + error.message);
			}

			// 配置信息
			var options = {
				timeout: 2000
			};
		</script>
	</body>
</html>

在该示例里,我们在定位成功的回调函数中获取了当前的经度、纬度、获取成功时的时间戳。但是请注意,在使用Geolocation之前最好先判断当前设备是否支持定位,毕竟有的浏览器对于HTML5支持得不够好。

结果如下:

screen

screen(屏幕对象)可获取与屏幕相关的数据,如屏幕的分辨率、坐标信息等。

示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
  <head>
    <meta charset="UTF-8">
    <title>screen</title>
  </head>
  <body>
    <script type="text/javascript">
		document.write("屏幕宽度:"+screen.width+"<br />");
		document.write("屏幕高度:"+screen.height+"<br />");
    </script>
  </body>
</html>

结果如下:

document

document (文档对象)亦称为DOM对象,我们在后续的学习中会专门详细介绍,在此略过。

window对象常用方法

window对象常用方法如下:

在此,介绍window中的核心方法。

prompt( )

window对象提供的prompt( )方法用于生成用户输入的对话框,示例如下:

//提醒用户输入
prompt("请输入您的用户名");
//提醒用户输入并附带默认值
prompt("请输入您的用户名","韩梅梅");

confirm( )

window对象提供的confirm( )方法用于弹出确认对话框,示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
	<head>
		<meta charset="utf-8" />
		<title>confirm</title>
	</head>
	<body>
		<input type="button" value="Delete" onclick="clickListener()"/>
		<script type="text/javascript">
			function clickListener(){
				if(confirm("确定删除么?")){
					alert("您点击了确定");
				}else{
					alert("您点击了取消");
				}
				
			}
		</script>
	</body>
</html>

结果如下:

close( )

window对象提供的close( )方法用于关闭浏览器窗口,示例如下:

<!DOCTYPE html>
<!-- 本文作者:谷哥的小弟-->
<!-- 博客地址:https://blog.csdn.net/lfdfhl-->
<html>
	<head>
		<meta charset="utf-8" />
		<title>close</title>
	</head>
	<body>
		<input type="button" value="Close Window" onclick="clickListener()"/>
		<script type="text/javascript">
			function clickListener(){
				window.close();
			}
		</script>
	</body>
</html>

转载:https://blog.csdn.net/lfdfhl/article/details/100727003
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场