Android程序员学WEB前端(13)-JavaScript(4)-Bom-Sublime

时间:2020-12-26 16:56:44

转载请注明出处:http://blog.csdn.net/iwanghang

觉得博文有用,请点赞,请评论,请关注,谢谢!~


先来一大段复制粘贴(介绍一下基础知识),然后贴上练习敲的代码(好几段代码,并且有大量中文注释),

这样两步,简简单单,又撸了一篇博文(B ǐ J ì)出来。。。

1、基础知识

来源:http://www.dreamdu.com/javascript/what_is_bom/

来源:http://www.w3school.com.cn/js/js_window.asp


BOM是browser object model的缩写,简称浏览器对象模型BOM提供了独立于内容而与浏览器窗口进行交互的对象
由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性
BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C
BOM最初是Netscape浏览器标准的一部分


浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器“对话”。浏览器对象模型(Browser Object Model)尚无正式标准。由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。全局变量是 window 对象的属性。全局函数是 window 对象的方法。


与浏览器窗口交互的一些对象,例如可以移动,调整浏览器大小的window对象,可以用于导航的location对象与history对象,可以获取浏览器,操作系统与用户屏幕信息的navigator与screen对象,可以使用document作为访问HTML文档的入口,管理框架的frames对象等

Android程序员学WEB前端(13)-JavaScript(4)-Bom-Sublime

window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象由于window是顶层对象,因此调用它的子对象时可以不显示的指明window对象document.write("www.lpjyc.com");window.document.write("www.lpjyc.com");

2、练习代码:

总的说,学习JavaScript还是很麻烦的,要学习跨浏览器,不过Android也是这样,要适配不同分辨率和API,毕竟都是UI层东西,这样看来,学习底层开发,不仅高大上而且少了很多麻烦事,不知道哪位不接触UI的大神 给 科普科普,后端开发 或者说 底层开发,到底是什么样的感受?


index1-base.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <title>index1-Bom1</title>    <script type="text/javascript">	  	// if (confirm("你是不是傻?"))   	// 	alert("看出来了,真是傻!");  	// else  	// 	alert("哎呦喂,不傻呀?");  	// var num = prompt("请输入一个整数");  	// alert("都会输入 "+ num + " 了,不简单呀~~");  	// 打开两个选项卡	// open("http://www.lpjyc.com");	// open("http://www.baidu.com");	// 打开两个选项卡 - 同上。 _blank 表示 在新窗口显示页面	// open("http://www.lpjyc.com","_blank");	// open("http://www.baidu.com","_blank");	// 打开一个选项卡,先跳转到www.lpjyc.com,马上跳转到www.baidu.com  	// open("http://www.lpjyc.com","lpjyc");  	// open("http://www.baidu.com","lpjyc");  	// _parent 表示 在当前窗口显示页面  	// open("http://www.lpjyc.com","_parent");	// open("haha.html");	// var obj = open("haha.html");	// alert(obj); // 弹出信息:[object Window]	// alert(typeof obj); // 弹出信息:object	// obj.alert("我是新窗口");	// 第三个参数,用来设置新窗口的属性	// open("haha.html",'','width=300,height=300,left=100,top=100,menubar=no,toolbar=no');	// ---------- 获取浏览器位置 ↓ ---------- 	// IE、谷歌 浏览器支持:screenLeft,screenTop	// alert(screenLeft);	// alert(screenTop);	// 火狐、谷歌 浏览器支持:screenX、screenY	// alert(screenX);	// alert(screenY);	// 跨浏览器兼容写法:(IE、谷歌、火狐 都支持的写法)	// var x = typeof screenLeft == 'number' ? screenLeft : screenX		// var y = typeof screenTop == 'number' ? screenTop : screenY		// alert(x + ", " + y);	// ---------- 获取浏览器位置 ↑ ---------- 	// ---------- 获取浏览器大小 ↓ ---------- 	// alert(innerWidth); // 内部页面-宽	// alert(innerHeight);	// 内部页面-高	// alert(outerWidth); // 浏览器-宽	// alert(outerHeight);	// 浏览器-高	// IE	// document.documentElement.clientWidth;	// document.documentElement.clientHeight;	// IE6	// document.body.clientWidth;	// document.body.clientHeight;	// 跨浏览器兼容写法:	// var width = window.innerWidth;	// var height = window.innerHeight;	// if(typeof width!='number'){	// 	if (document.compatMode=='CCS1Compat') {	// 		width = document.documentElement.clientWidth;	// 		height = document.documentElement.clientHeight;	// 	}else{	// 		width = document.body.clientWidth;	// 		height = document.body.clientHeight;	// 	}	// }	// alert(width + ", " + height);	// ---------- 获取浏览器大小 ↑ ---------- 	// 超时调用:在指定的时间过后执行代码,执行一次	// 1.	// setTimeout("alert('hello')",1000);	// 2.	// setTimeout(show,1000);	// function show(){	// 	alert("hello");	// }	// 3.	// setTimeout(function(){	// 	alert("hello");	// },1000);	// 间隔调用:每间隔指定的时间过执行代码,重复执行	// var a = setInterval(function(){	// 	alert("hello");	// },1000);	// clearInterval(a); // 清除间隔调用	// 弹出4次hello	// var i = 0;	// var a = setInterval(function(){	// 	i++;	// 	if (i>3) {	// 		clearInterval(a); // 清除间隔调用	// 	};	// 	alert("hello");	// },1000);	// 定时器 - setInterval	// var num = 0;	// var b = setInterval(function(){	// 	num++;	// 	if (num==5) {	// 		alert("5秒");	// 		clearInterval(b); // 清除间隔调用	// 	};	// },1000)	// 定时器 - setTimeout	var number = 0;	setTimeout(funA,1000);	function funA(){		number++;		if (number==5) {			alert("5秒");		}else{			setTimeout(funA,1000);		}	}    </script></head><body></body></html>

index2-location.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <title>index2-location</title>    <script type="text/javascript">    	// location 地址操作命令		// alert(location);		// alert(document.location);		// alert(location.protocol); // 协议		// alert(location.hostname); // 主机名		// alert(location.port);	// 端口号		// alert(location.pathname); // 路径		// alert(location.hash); // 锚点		// file:///F:/H5Demo/Bom/index2.html?name=lilei&age=106&sex=x		// 原地址加上?name=lilei&age=106&sex=x进行访问		// alert(location.search); // 打印结果:?name=lilei&age=106&sex=x		// // 截取?后边的字符串		// function getSearch(){		// 	var args = [];		// 	var str = location.search.length>0?location.search.substring(1):'';		// 	alert(str);		// 	var arrs = str.split('&');		// 	var item = null, m = null, n = null;		// 	for(var i=0;i<arrs.length;i++){		// 		alert(arrs[i]);		// 		item = arrs[i].split('=');		// 		m = item[0];		// 		n = item[1];		// 		args[m] = n;		// 	}		// 	return args;		// }		// var arr = getSearch();		// alert(arr['name']);		// alert(arr['age']);		// alert(arr['sex']);		// 改变地址栏中的地址		function changeUrl(){			// location.href = 'haha.html';			// location.assign('haha.html');			// location.replace('haha.html'); // 不能后退			// location.reload(); // 重新加载当前页面(可能从缓存中加载)			location.reload(true); // 重新加载当前页面(一定是从服务器重新加载)		}    </script></head><body>	<a href="javascript:changeUrl()">点击</a></body></html>

index3-history.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <title>index3-history</title>    <script type="text/javascript">		// 前进		function forwards(){			// history.forward();			history.go(1);		}    </script></head><body>	<a href="hihi.html">点击</a>	<a href="javascript:forwards()">前进</a></body></html>

hihi.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <title>hihi</title>    <script type="text/javascript">		function goBack(){			// window.history.back()			window.history.go(-1)		}    </script></head><body>	hihi~~	<a href="javascript:goBack()">后退</a>	<!-- <input type="button" value="返回" onclick="goBack()"> --></body></html>


BrowserDetect.js

var BrowserDetect = {    init: function () {        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";        this.version = this.searchVersion(navigator.userAgent)            || this.searchVersion(navigator.appVersion)            || "an unknown version";        this.OS = this.searchString(this.dataOS) || "an unknown OS";    },    searchString: function (data) {        for (var i=0;i<data.length;i++)    {            var dataString = data[i].string;            var dataProp = data[i].prop;            this.versionSearchString = data[i].versionSearch || data[i].identity;            if (dataString) {                if (dataString.indexOf(data[i].subString) != -1)                    return data[i].identity;            }            else if (dataProp)                return data[i].identity;        }    },    searchVersion: function (dataString) {        var index = dataString.indexOf(this.versionSearchString);        if (index == -1) return;        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));    },    dataBrowser: [        {            string: navigator.userAgent,            subString: "Chrome",            identity: "Chrome"        },        {     string: navigator.userAgent,            subString: "OmniWeb",            versionSearch: "OmniWeb/",            identity: "OmniWeb"        },        {            string: navigator.vendor,            subString: "Apple",            identity: "Safari",            versionSearch: "Version"        },        {            prop: window.opera,            identity: "Opera"        },        {            string: navigator.vendor,            subString: "iCab",            identity: "iCab"        },        {            string: navigator.vendor,            subString: "KDE",            identity: "Konqueror"        },        {            string: navigator.userAgent,            subString: "Firefox",            identity: "Firefox"        },        {            string: navigator.vendor,            subString: "Camino",            identity: "Camino"        },        {        // for newer Netscapes (6+)            string: navigator.userAgent,            subString: "Netscape",            identity: "Netscape"        },        {            string: navigator.userAgent,            subString: "MSIE",            identity: "Internet Explorer",            versionSearch: "MSIE"        },        {            string: navigator.userAgent,            subString: "Gecko",            identity: "Mozilla",            versionSearch: "rv"        },        {         // for older Netscapes (4-)            string: navigator.userAgent,            subString: "Mozilla",            identity: "Netscape",            versionSearch: "Mozilla"        }    ],    dataOS : [        {            string: navigator.platform,            subString: "Win",            identity: "Windows"        },        {            string: navigator.platform,            subString: "Mac",            identity: "Mac"        },        {               string: navigator.userAgent,               subString: "iPhone",               identity: "iPhone/iPod"        },        {            string: navigator.platform,            subString: "Linux",            identity: "Linux"        }    ]};BrowserDetect.init();



index4-navigator.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <title>index4-navigator</title>    <script type="text/javascript" src="BrowserDetect.js"></script> 	<script type="text/javascript">    	// 1.获取浏览器信息    	// alert(navigator.appName); // Netscape    	// alert(navigator.userAgent); // Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36    	// alert(navigator.platform); // Win32    	// 2.浏览器嗅探器 - BrowserDetect.js		alert(BrowserDetect.browser); // Chrome		alert(BrowserDetect.varsion); // undefined		alert(BrowserDetect.OS); // Windows		// 判断是否是IE6		if(BrowserDetect.browser=='Internet Explorer' && BrowserDetect.varsion<7){			alert("IE6需要处理兼容问题");    </script></head><body></body></html>

index5-navigator-2.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">    <title>index5-navigator-2</title>    <script type="text/javascript">    // 1.插件,通过下载安装完成。比如,在线音乐、视频动画等等。    // navigator对象的plugins属性,存储了浏览器已安装插件的完整列表。    // alert(navigator.appName); // Netscape    // alert(navigator.plugins);    // alert(navigator.plugins.length);    // for (var i = 0; i < navigator.plugins.length; i++) {    //     document.write("插件名称:" + navigator.plugins[i].name + "<br>");    //     document.write("插件描述:" + navigator.plugins[i].description + "<br>");    // }    // 不是所有的IE浏览器都支持该属性    // 检测非IE浏览器,是否含有某个插件    function hasPlugin(name){        var name = name.toLowerCase(); // 转成小写        for (var i = 0; i < navigator.plugins.length; i++) {            if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {                return true;            }        }        return false;    }    // alert(hasPlugin('Flash')); // 比如,判断是否有Flash插件    // 2.验证是否含有某个ActiveX控件    function hasIEPlugin(){        try{            // 可能发生异常的代码            // new ActiveXObject('ShockwaveFalsh.ShockwaveFalsh');            new ActiveXObject("ShockwaveFlash.ShockwaveFlash");  // 比如,判断是否有Flash插件            return true;        }catch(e){            return false;        }    }    // alert(hasIEPlugin());    // 3.跨浏览器兼容写法(判断是否有Flash插件):    function hasPlugins(){        var boo = hasPlugin("Flash"); // 如果返回true说明 当前非IE浏览器,或者IE11        if (!boo) {            boo = hasIEPlugin();        }        return boo;    }    alert(hasPlugins());    </script></head><body></body></html>

转载请注明出处:http://blog.csdn.net/iwanghang




欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
Android程序员学WEB前端(13)-JavaScript(4)-Bom-Sublime
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com



觉得博文有用,请点赞,请评论,请关注,谢谢!~