首页 > 编程语言 > 详细

读javascript高级编程09-BOM

时间:2014-08-01 18:32:42      阅读:376      评论:0      收藏:0      [点我收藏+]

一、window

1.在全局作用域中定义的变量和函数会被归在window对象。

var a=1,b=2;
function add(a,b){
return a+b;
}
console.log(window.a);//1
console.log(window.add(a,b));//3

有点区别在于,全局变量不能用delete删除,而直接在window对象定义的属性可以用delete删除。

2.计算窗口位置

var leftpos=typeof window.screenLeft=="number"?window.screenLeft:window.screenX;
var toppos=typeof window.screenTop=="number"?window.screenTop:window.screenY;

3.间接性调用

①setInterval方法:

var i=1,max=10;
  function f(){
    if(i==max){
    clearInterval(test);
      console.log(‘Done‘);
    }
    else{
      console.log(i);
      i++;
    }
  }
var test=setInterval(f,1000);

②用setTimeout方法实现:

var i=1,max=10;
  function f(){
    if(i==max){
      console.log(‘Done‘);
    }
    else{
      console.log(i);
      setTimeout(f,1000);
      i++;
    }
  }
var test=setTimeout(f,1000);

使用超时调用模拟间歇调用是一种最佳实践。

4.系统对话框

prompt:

var result=prompt("your name?");
if(result!=null){
alert(‘hello,‘+result);
}

二、location对象

1.location对象属性:

window.location和document.location指向同一个对象。

每次修改location的属性(hash除外),都会以新URL重新加载页面。

location对象几个常用的属性实例:

//url为:http://www.cnblogs.com/janes/p/3829648.html
//hash:用于锚点定位
location.hash="#author_profile_info";//定位到头像
//hostname:不带端口号的服务器名称
location.hostname;//"www.cnblogs.com"
//href:当前页面的完整url
location.href;//"http://www.cnblogs.com/janes/p/3829648.html#author_profile_info"
//pathname:url中的路径名或者文件名
location.pathname;//"/janes/p/3829648.html"
//search:url中的查询字符串,以问号开头
location.search;//""

2. 获取查询字符串参数:

function getQueryArgs(){
  var qs=location.search.length>0?location.search.substring(1):"";
  var result={};
  var items=qs.length?qs.split(‘&‘):[];
  var item=null,name=null,value=null;
  for(var i=0;i<items.length;i++){
    item=items[i].split(‘=‘);
    name=decodeURIComponent(item[0]);
    value=decodeURIComponent(item[1]);
    if(name.length>0){
      result[name]=value;
    }
  }
  return result;
}
var r=getQueryArgs();

3.修改url:

location.href="http://www.baidu.com";//打开新URL之后可以通过浏览器后退回到前一页面
location.replace("http://www.baidu.com");//打开新URL之后在某些浏览器下不能通过后退回到前一页面

重新加载页面:

location.reload():可能从缓存加载
location.reload(true):重新从服务器加载

三、navigator对象

1.常用属性

navigator.cookieEnabled:浏览器cookie是否可用
navigator.userAgent:浏览器的用户代理字符串;

2.检测插件:检测浏览器中是否安装了某个插件。

非IE浏览器:使用plugins数组,判断插件名称在name属性中是否存在。

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;
}

//调用
hasPlugin(‘Flash‘);

IE浏览器:使用ActiveObject对象,并尝试创建插件的一个实例。

function hasIePlugin(name) {
  try {
    new ActiveXObject(name);
    return true;
  } catch(ex) {
    return false;
  }
}

//调用
hasIePlugin(‘ShockWaveFlash.ShockWaveFlash‘);

由于两种检测方式差异较大,所以一般针对每个插件写单独的检测方法:

function hasFlash() {
  var result = hasPlugin(‘flash‘);
  if (!result) {
    result = hasIePlugin(‘ShockWaveFlash.ShockWaveFlash‘);
  }
  return result;
}

读javascript高级编程09-BOM,布布扣,bubuko.com

读javascript高级编程09-BOM

原文:http://www.cnblogs.com/janes/p/3885183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!