BOM–浏览器对象模型
window对象-------Global对象
在全局作用域定义的变量是window的,定义的方法也是window的,全局定义的变量不能delete删除,通过点属性去复制的变量就可以删除:
var message=“ok”;//不可删除
window.message=“ok”//可以删除
location对象和navigator对象都是window的对象
每一个frame框架下都有一个window对象,每个window对象都有一个name属性。
//兼容不同浏览器下获取浏览器左上部的值
var leftPos=(typeof window.screenLeft=="number")? window.screenLeft:window.screenX;
var topPos=(typeof window.screenTop=="number")? window.screenTop:window.screenY;
alert(leftPos+","+topPos);
打开窗口:
window.open("www.baidu.com","__blank","height=150,width=200,top=200,left=400");
第一个参数是URL链接,第二个参数是是不是在frame框架下打开,还是打开一个新的窗口,第三个就能写这四个参数,不信你试试别的,基本没效果,第四个参数是一个布尔值,是指在不打开新窗口的情况下用。
window.close();//关闭窗口
判断窗口是否关闭:
window.closed==true,为真!!!
为了不让大家对浏览器产生麻烦,乱弹东西,浏览器本身也会做出诸多限制!!!
检测浏览器是否同意自动弹出窗口:
var blocked=false;
try{
var win=window.open("www.baidu.com","__blank","height=150,width=200,top=200,left=400");//自动弹出
if(win==null){
blocked=true;
}
}catch(ex){
blocked=true;
}
if(blocked){
alert("弹出已经被限制了!!!");
}
window有两个时间相关的方法:
setTimeout(“函数”,毫秒数);//要等待多少毫秒在执行
setInterval(“函数”,毫秒数);//每隔一段时间执行一次,循环执行,直到取消
执行完毕返回一个ID
clearTmeout(ID);//就取消了
//弹出框
alert("hello");
//一问一答的框,是或者否
if(confirm("你确定吗?")){
alert("ok,我明白了");
}else{
alert("好的,你还不确定");
}
//输入框
var res=prompt("请输入你的名字","");
if(res !=null){
alert("你好!"+res);
}else{
alert("再见?");
}
location对象:
本身就是window的属性:保存了当前文档的信息
window.location==document.location,他俩是一回事
console.log("散列值#:"+window.location.hash);
console.log("服务器名称端口号:"+window.location.host);
console.log("服务器名称:"+window.location.hostname);
console.log("完整的URL:"+window.location.href);
console.log("目录名:"+window.location.pathname);
console.log("端口:"+window.location.port);
console.log("通讯协议:"+window.location.protocol);
console.log("查询?开头的字符串:"+window.location.search);
查询URL里面的get参数:
function getQueryStringArgs(){
var qs =(location.search.length>0?location.search.substring(1):"");
var args={};
var items=qs.length?qs.split("&"):[];
var item=null;
var name=null;
var val=null;
var i=0;
var len=items.length;
for(i=0;i<len;i++){
item=items[i].split("=");
name=decodeURIComponent(item[0]);
val=decodeURIComponent(item[1]);
if(name.length){
args[name]=val;
}
}
return args;
}
var res=getQueryStringArgs();
console.log(res);
重新跳页面:
window.assgin("http://www.baidu.com");
location.href="http://www.baidu.com";//常用的一种方式
window.location="http://www.baidu.com";
上面的方法是一样的。
location.replace("http://www.baidu.com");
用这种方法打开的网站是不会返回的。
location.reload();//重新加载页面
location.reload(true);//重新加载服务器上的页面
Navigator对象:
console.log("浏览器名称:"+navigator.appCodeName);
console.log("次版本信息:"+navigator.appMinorVersion);
console.log("完整的浏览器名称:"+navigator.appName);
console.log("版本:"+navigator.appVersion);
console.log("浏览器编译版本:"+navigator.buildID);
console.log("cookie是否启用:"+navigator.cookieEnabled);
console.log("客户端cpu类型:"+navigator.cpuClass);
console.log("浏览器是否启用了java:"+navigator.javaEnabled());
console.log("浏览器主语言:"+navigator.language);
console.log("浏览器中注册的MINE类型数组:"+navigator.mineTypes);
console.log("浏览器是否连接到了互联网:"+navigator.onLine);
console.log("客户端操作系统:"+navigator.oscpu);
console.log("浏览器所在系统平台:"+navigator.platform);
console.log("浏览器插件信息数组:"+navigator.plugins);
console.log("设置用户首选项:"+navigator.preference());
console.log("产品名称:"+navigator.product);
console.log("产品次要信息:"+navigator.productSub);
console.log("浏览器的用户代理字符串:"+navigator.userAgent);
检测是否有我们查询的插件:
//除IE以外
function hasPlugin(name){
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;
}
//IE
function hasIEPlugin(name){
try{
new ActiveXObject(name);
return true;
}catch (ex){
return false;
}
}
//检测方法:
function hasFlash(){
var result=hasPlugin("Flash");
if(!result)
{
result=hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
alert(hasPlugin());
Screen对象:
Screen.width:屏幕像素宽度
Screen.height:屏幕像素高度
history对象:
history.back();向后一页
history.forward();向前一页
history.go(数字);表示去浏览过的哪一页,可以为正值,也可以为负值。
history.go(字符串);表示去url近字符串的那一页。