js的window对象与属性的使用

1.BOM的概述
    browser object modal :浏览器对象模型。
    浏览器对象:window对象。
    Window 对象会在 <body> 或 <frameset> 每次出现时被自动创建。

2. window对象

window对象是BOM中所有对象的核心。BOM    Browser  Object Model

3.window对象的属性

window.open(), (打开窗口)
window.close(), (关闭一个窗口)
window.self()(窗口本身)  
window.focus()(使当前的窗口在所有窗口之前. )
window.status=”内容” (js中状态栏显示内容:)
window.navigate(”http://www.google.com”); (js中的窗口重定向:)
window.print() (js中的打印:)
window.prompt(”message”,”defaultreply”); (js中的提示输入框:)
window.scroll(x,y) (js中的窗口滚动条)
window.scrollby(js中的窗口滚动到位置:)
window.history.back()返回上一页
window.history.forward()返回下一页,
window.history.go(返回第几页,也可以使用访问过的url) 如果是0那么就是刷新
history.length 
window.createElement

1.(位置类型-获得浏览器的位置)
IE:
window.screenLeft
可以获得浏览器距屏幕左上角的左边距  
window.screenTop
可以获得浏览器距屏幕左上角的上边距

 FF:  
alert(screenX)  
alert(screenY)

//IE
左边距
alert(screenLeft)
上边距
alert(screenTop)

//FF
左边距
alert(screenX)
上边距
alert(screenY)

(获得浏览器的尺寸)

FF:window.innerWidth  获得窗口的宽度
window.innerHeight  获得窗口的高度

//FF:
alert(window.innerWidth);
alert(window.innerHeight);
//IE:
alert(document.documentElement.clientWidth)
alert(document.documentElement.clientHeight)

2.窗体控制

screen对象记录了客户端显示屏的信息

a.属性

availHeight   返回显示屏幕的高度 (除 Windows 任务栏之外)。

availWidth    返回显示屏幕的宽度 (除 Windows 任务栏之外)。

height       返回显示屏幕的高度。

width        返回显示屏幕的宽度。

<script>
  document.write(screen.availHeight)
  document.write("<br/>")
  document.write(screen.height)
   document.write("<hr/>")
  document.write(screen.availWidth)
   document.write("<br/>")
  document.write(screen.width)
</script>

b.方法

对窗体的移动,window.moveBy(x,y)  相对于当前位置沿着X\Y轴移动指定的像素,如负数是反方向。moveTo(x,y)  相对于浏览器的左上角沿着X\Y轴移动到指定的像素,如负数是反方向。

窗体尺寸的改变,resizeBy(x,y)  相对于当前窗体的大小,调整宽度和高度。resizeTo(x,y)  把窗体调整为指定宽度和高度

script>
//窗体控制
//位置
moveBy(100,100);
//moveTo(200,200)
//尺寸
 window.resizeBy(100,100)
resizeTo(400,400)
</script>

对窗体滚动条的控制,scrollBy(x,y) 相对于当前滚动条的位置移动的像素(前提有滚动条)。scrollTo(x,y) 相对于当前窗口的高度或宽度,移动到指定的像素

scrollBy(0,100)
scrollTo(0,200)

innerHeight: 
innerWidth:  IE不支持

 </head>
	<script type="text/javascript">
	<!--
		  /*
			window对象的属性:
					  1.innerHeight: 返回文档显示区的高度  
					  2.innerWidth: 返回文档显示区的宽度   IE不支持
						  通用写法: window.document.body.clientWidth ;
					  3. outerheight  包括了工具栏,菜单栏等的高度
					  4. outerwidth   包括滚动条的宽度

		  */
		function init(){
			var x = window.document.body.clientWidth ;
			var y = window.document.body.clientHeight ;
			alert(x + ":" + y) ;
		}
	//-->
	</script>
 <body onload = "init()">
       <p>你好</p>
 </body>

3.window.event window事件

获取事件对象,当没有事件发生的时候为null。

 window.event
 window.onload=function  (e) {
	 e
	 var ev=e||window.event;
}

a.鼠标事件

相对于浏览器位置的(左上角为(0,0))
     clientX  当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置
     clientY  当鼠标事件发生的时候,鼠标相对于浏览器Y轴的位置

相对于屏幕位置的
     screenX   当鼠标事件发生的时候,鼠标相对于屏幕X轴的位置
     screenY

  window.onload=function  (e) {
     window.event
	 var ev=e||window.event;
	 var div1=document.getElementById("div1");
     document.onmousemove=function  (e) {
       var ev=e||window.event;
	   var cx=ev.clientX;
	   var cy=ev.clientY;
	   var sx=ev.screenX;
	   var sy=ev.screenY;
	   div1.innerHTML="cx:"+cx+"--cy:"+cy+"<br/>sx:"+sx+"--sy:"+sy;
	 }
}

<div id="div1" style="width:200px;height:200px;border:1px solid red">

相对于事件源的位置
IE:
offsetX   当鼠标事件发生的时候,鼠标相对于事件源X轴的位置
offsetY

FF:
layerX   当鼠标事件发生的时候,鼠标相对于事件源X轴的位置
laterY

 window.onload=function  (e) {
     window.event
	 var ev=e||window.event;
	 var div1=document.getElementById("div1");
     div1.onclick=function  (e) {
     var ev=e||window.event;
	 var ox=ev.offsetX ||ev.layerX;
	 var oy=ev.offsetY ||ev.layerY;
     div1.innerHTML="ox:"+ox+"--oy:"+oy;
     }

具体使用

模拟窗口拖拽

divs=document.createElement("div");	  
 divs.onmousedown=function  (e) {
        var ev=e||window.event;
        var ox=ev.offsetX ||ev.layerX;//第一次点击div不能动,相对于事件源的位置
	     var oy=ev.offsetY ||ev.layerY;
		 var ok=true;//标识鼠标放开的时候还移动
		this.onmousemove=function  (e) {//移动的时候跟随鼠标移动
		   if(ok){
		   var ev=e||window.event;
		   var cx=ev.clientX;
		   var cy=ev.clientY;
		   this.style.top=cy-oy+"px";//绝对定位
		   this.style.left=cx-ox+"px";
		   }
		}
		this.onmouseup=function  () {
         if(ok){
		   ok=false;
		 }
	   }
	   }

<input type="button" id="but">

b.键盘事件对象

keyCode  获得键盘码
空格:32   回车13  左上右下:37 38 39 40
altKey   判断alt键是否被按下  按下是true 反之是false   布尔值
ctrlKey   判断ctrl键
shiftKey 判断shift键
type   用来检测事件的类型   主要是用于多个事件通用一个事件处理程序的时候

document.body.onkeydown=function  (e) {
	   var ev=e||window.event;
	   ev.keyCode
	   ev.altKey
	   ev.type
}

具体使用

点击提交,内容自动读取

<Script>
  window.onload=function  () {
    var one=document.getElementById("one");
    var texts=document.myform.texts;
	var but=document.myform.but;
	but.onclick=texts.onkeydown=function  (e) {//回车
	   var ev=e||window.event;
       if(ev.type=="click" ||(ev.type=="keydown" && ev.keyCode==13 && ev.ctrlKey==true)){
	      var elep=document.createElement("p");
		  elep.innerHTML=texts.value;
		  elep.className="pone";
		  one.appendChild(elep);
		  texts.value="";

	   }
	}

  }
</script>


<body>
<div id="one" style="width:400px; background-color:#eeeeee;padding:10px">
  <h3>
     留言记录:
  </h3>
  <hr/>
  <p class="pone">
     你好
  </p>
</div>
<form name="myform">
  <textarea name="texts" cols=50 rows=10>
  </textarea>
  <input type="button" value="提交" id="but">
</form>
</body>

4.关系类型

 A.parent返回父窗口
 B.top返回顶层窗口

 C.self===window

 D.stutas  设置窗口状态栏的文本

<script>
  window.onload=function  () {
     alert(top===parent)
	window.status="自定义的状态栏文字"
	alert(frames[0])
  }
</script>

<frameset rows="20%,*">
   <frame src="top.html" >
   <frameset cols="20%,*" >
   <frame src="left.html" >
   <frame src="right.html" >
   </frameset>
</frameset>

self :等同于window对象
opener:当前打开窗口的父窗口对象,支持opener.opener…的多重继续。
                   2种情况下使用opener:
                   1.使用winodw.open()方法打开的页面
                   2.超链(里面的target属性要设置成_blank)
open方法,是打开一个页面.

js中分为两种窗体输出:模态和非模态.window.showmodaldialog(),window.showmodeless()

js的window.open()方法的使用

open(string method,string url,boolean asynch,String username,string password)

指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;
method:表示http请求方法,一般使用"GET","POST".
url:表示请求的服务器的地址;
asynch:表示是否采用异步方法,true为异步,false为同步;
后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。

        		var url = "completeFormone.html?s=" + Math.random()+"&installAcceptId="+rows[0].installAcceptId;
        		window.open(url);

打开新的窗口,open(url,name,feafurse,replace) 通过脚本打开新的窗口。

open("test.html","windows","status=0,menubar=0,toolbar=0")
 window.onload=function  () {
    var names=document.getElementById("names");
	var but=document.getElementById("but");
	but.onclick=function  () {
	  open("test.html","windows","status=0,menubar=0,toolbar=0")
	}
 }

模态和非模态.window.showmodaldialog(),window.showmodeless()

showmodaldialog(”url”[,arguments][,features])

重新打开一个页面

	<script type="text/javascript">
	<!--
		function fun(){
		
			window.open("sub.html","","width=200,height=200,status=no,titlebar=no,menubar=no,toolbar=no,resizable=0") ;
		}
	//-->
	</script>
 <body>
	<input type="button" value="打开sub.html页面" onclick="fun()">
 </body>
		  function fun(){
			 self.open("sub.html") ;
		  }

	</script>
 <body>
      <input type="text" name="" id = "txt"> 
	  <input type="button" value="打开sub.html页面" onclick="fun()">

	  <a href = "sub.html" target = "_blank">打开sub.html页面</a>
 </body>

openWindow()参数的传递与关闭刷新

点击弹出一个新窗口

	afvButton.click(function(){
		debugger;
		var orandid = $($("body input[id='orandid_view_act']"),$("div[id='divMain']",$("body",parent.document)).context.activeElement).val();
		var volid = _grid.getIds();
		openWindow(volid+"&volType=1",orandid);
	})

function openWindow(ids,orandid){
	var options = {
		modal : true,
		title : "站箱调压器AFV检修记录",
		collapsible : false,
		minimizable : false,
		maximizable : false,
		closable : true,
		closed : false
	};
	var uid = "self_card_";
	options["id"] = uid;
	winFormDesigner = UIFactory.getUI(uid);
	if(!winFormDesigner){
		winFormDesigner = UIFactory.create(xpad.ui.Window, options);
	}
	var root = jQuery("body");
	var offset = root.offset();
	var winleft = 0;
	var wintop = 0;
	var newSize = {};
	newSize["left"] = 0;
	newSize["top"] = 0;
	newSize["width"] = jQuery("body").width();
	newSize["height"] = jQuery("body").height();
	winFormDesigner.window("resize", newSize);
	setTimeout(function(){
			winFormDesigner.loadURL(Leopard.getContextPath() + "/platform/views/cusviews/devMatainView/afvVoltage.jsp?ids="+ids+"&orandid="+orandid);
		
	}, 0);
}

设置窗口的滚动条

为class为list_wrap增加overflow:auto属性,并动态设置高度

如果内容被修剪,则浏览器会显示滚动条,以便查看其余内容

<script type="text/javascript">
$(function(){
var height = $(window).height();
$(".list_wrap").css("height",height);	
})
</script>

参数的传递

jsp获取openWindow传递的参数

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

<c:set var="ctx" value="${pageContext.request.contextPath}" />
<input id="root" type="hidden" value="${ctx }"/>
<input id="ids" type="hidden" value="<%=request.getParameter("ids") %>"/>
<input id="volType" type="hidden" value="<%=request.getParameter("volType") %>"/>
<input id="orandid" type="hidden" value="<%=request.getParameter("orandid") %>"/>

js获取jsp页面的值

var root = null;
var ids = null;
var xcbh = null;


$(document).ready(function() {
	root = $("#root").val();
	ids = $("#ids").val();
	volType = $("#volType").val();
	orandid = $("#orandid").val();
	initpage();
});

function initpage(){
	var isRead = $("#isRead").val();
	if(isRead && isRead=="true"){
		$(".tb_query").show();
	}else{
		$(".tb_query").hide();
	}
	root = $("#root").val();
	
	showTime();
	
	if(ids!="null"){
		readxctyz();
		readxctyzx();
	}
	var timer = "";
	$("#save").click(function(){
		xctyz();
		$(this).attr("disabled", true); 
		timer = setTimeout(function(){
			$("#save").attr("disabled", false); 
        },6000);

	})
	
	 $("#reset").click(function(){
		    tjbxxcz();
		    tyzxccz();
	})
}

后台接收参数

	@SuppressWarnings("unchecked")
	@RequestMapping("/Addxctyz")
	@ResponseBody
	public Boolean Addxctyz(HttpServletRequest request, HttpServletResponse response,String requestParam){
		String orandid = request.getParameter("orandid ");
		String ids = request.getParameter("ids");
}

关闭openwindow刷新页面

在外面div设置刷新按钮

if($("#reloadGrid").length==0){
	$("#SY_TYZJKXC-QForm .formBody").append("<button id='reloadGrid' style="dispaly:none">刷新</button>");
	$("#reloadGrid").hide();
	$("#reloadGrid").click(function(){
		_grid.reload();
	});
}

返回刷新外层div

    $.ajax({  
        url:root + "/AddAfv",  
        data:param,  
        type:"post",  
        dataType:"json",  
        success:function(data){  
            alert("保存成功");  
            debugger;
            $($("#reloadVolGrid",$("#layout_RECODR_MAINTAIN_VOLTAGE_listbar",parent.$(".panel window").context))).click();
        },  
        error:function(){  
        	alert("服务器正忙,请稍后重试");  
        }  
    }) 

窗口全屏大小:

<script>function fullscreen(){ this.moveto(0,0);this.outerwidth=screen.availwidth;this.outerheight=screen.availheight;}window.maximize=fullscreen;</script> 

close方法

 <body>
	<script type="text/javascript">
	<!--
		window.close() ;
	//-->
	</script>
 </body>

parent:是打开窗口的父窗口对象

2种情况下使用parent:
                   1.iframe 框架
                   2.frame 框架
frames[]: 数组类型,代表子窗口的window对象的集合,可以通过frames[索引]拿到子窗口的window对象。
示例:父子窗口相互传参.

  <title>window对象的parent属性</title>
 </head>
	<script type="text/javascript">
	<!--
		function fun(){
			//1.拿到文本框中填写的数据
			   var v = document.getElementById("txt").value ;
			//2.拿到子窗口对象
			   var w = window.frames[0];
			//3.拿到子窗口中的文本框对象
			   var txt = w.document.getElementById("txt") ;
			//4.将内容赋值给父窗口中的文本框对象的value属性
				txt.value = v ;
		}
	//-->
	</script>
 <body>
	  姓名:<input type="text" name="" id = "txt"><input type="button" value="传递数据到子窗口中" onclick="fun()">
	  <iframe src = "sub1.html"></iframe>
 </body>

sub1.html

 </head>
	<script type="text/javascript">
	<!--
		function fun(){
			//1.拿到文本框中填写的数据
			   var v = document.getElementById("txt").value ;
			//2.拿到父窗口对象
			   var w = window.parent;
			//3.拿到父窗口中的文本框对象
			   var txt = w.document.getElementById("txt") ;
			//4.将内容赋值给父窗口中的文本框对象的value属性
				txt.value = v ;
		}
	//-->
	</script>
 <body>
      <input type="text" name="" id = "txt"><input type="button" value="传递数据到父窗口中" onclick="fun()">
 </body>

 对话框:
1)消息框 alert() ;
2)确认框 confirm() ;
3)输入框 prompt() ; (了解)

	<script type="text/javascript">
	<!--
		/*
			三种对话框:1. 消息框:alert() ;
					    2. 确认框: confirm() :返回Boolean类型的值
						3. 输入框: prompt(): 返回输入的字符串(了解)
		*/
		//window.alert("你好") ;

		/*while(true){
			if(confirm("你爱我吗?") == false)
			   continue ;
			break ;
		}*/

		var a = prompt("请输入年龄:",12) ;
		alert(a) ;
	//-->
	</script>

window的模态窗体

 <body>
	  <script type="text/javascript">
	  <!--
		   /*
			    模态窗体:
		   */

		 //  window.showModalDialog("你好") ;  
		  window.showModelessDialog("你好");
	  //-->
	  </script>
 </body>

history对象

history对象包含浏览器访问过的url,浏览器的历史记录访问

<Script>
  window.onload=function  () {
     var one=document.getElementById("one");
	 one.onclick=function  () {
	    history.forward()
            history.back()
		history.go(-3)
		history.go(3)
	 }
  }
</script>

<body>
<p>
   history1.html
</p>
<script>
  alert(history.length)
</script>
<a href="history2.html">链接到2</a>
<input type="button" value="前进" id="one">

</body>

a.  forward()前进  b.  back() 后退  c.  go(n) 正数是前进,负数是后退.

 </head>
	 <script type="text/javascript">
	 <!--
		  /*
			   history对象存储了访问过的页面。
		  */

		  function fun(){
				history.forward();
		  }
	 //-->
	 </script>
 <body>
	  <a href = "b.html">b.html</a>
	  <input type="button" value="前进" onclick="fun()">
 </body>

b.html

 <script type="text/javascript">
	 <!--
		  /*
			   history对象存储了访问过的页面。
		  */

		  function fun(){
				history.forward();
		  }

		  function fun1(){
			   history.back() ;
		  }

		  function fun2(){
			   history.go(2) ;
		  }
	 //-->
	 </script>
 <body>
	  <a href = "c.html">c.html</a>
	  <input type="button" value="前进" onclick="fun()">
	  <input type="button" value="后退" onclick="fun1()">
	  <input type="button" value="直接去d页面" onclick="fun2()">
 </body>

c.html

 <script type="text/javascript">
	 <!--
		  /*
			   history对象存储了访问过的页面。
		  */

		  function fun(){
				history.forward();
		  }

		  function fun1(){
			   history.back() ;
		  }

		  function fun2(){
			   history.go(-2) ;
		  }
	 //-->
	 </script>
 <body>
	  <a href = "d.html">d.html</a>
	  <input type="button" value="前进" onclick="fun()">
	  <input type="button" value="后退" onclick="fun1()">
	  <input type="button" value="直接去a页面" onclick="fun2()">
 </body

d.html

 <script type="text/javascript">
	 <!--
		  /*
			   history对象存储了访问过的页面。
		  */

		  function fun1(){
			   history.back() ;
		  }

		  function fun2(){
			   history.go(-3) ;
		  }
	 //-->
	 </script>
 <body>
	  <input type="button" value="后退" onclick="fun1()">
	  <input type="button" value="直接去a页面" onclick="fun2()">
 </body>

location对象

location对象包含有当前url的相关信息
1.href 属性: 是指要连接到其他的URL,返回完整的url
                        写法一、window.location.href='demo_window对象的close方法.html' ;
                        写法二、window.location='demo_window对象的close方法.html' ;

1.reload方法: 刷新
            写法: window.location.reload() ;

2.search   返回url?后面的查询部分

3.protocol(http:),

4.hostname(www.example.com)

5.port(80)

6.host(www.example.com:80)

7.pathname(”/a/a.html”)

8.hash(”#giantgizmo”,指跳转到相应的锚记)

方法

assign()   加载新的文档

reload(boolean)   重新加载文档, 当参数是true,任何时候都会重新加载,false的时候,只有在文档改变的时候才会加载,否则直接读取内存当中的。

replace() 用新的文档代替当前的文档  (没有历史记录)

location.href="location2.html?1234"
location.assign("location2.html");
location.reload()
location.replace("location2.html")

window.location.reload()(刷新当前页面.)

window.location.href=”url” (指定当前显示链接的位置)

parent.location.reload()刷新父亲对象(用于框架)

opener.location.reload()刷新父窗口对象(用于单开窗口)

top.location.reload()刷新最顶端对象(用于多开窗口)

	<script type="text/javascript">
	<!--
		/*1 href属性
		  2. reload()方法:重新加载本页面
		*/
		function fun(){
			//window.location.href = "b.html" ;
			window.location = "b.html" ;
		}

		function fun1(){
			window.location.reload();
		}
	//-->
	</script>
 <body>
		<input type="button" value="直接去b.html" onclick="fun()">
		<input type="button" value="重新加载本页面" onclick="fun1()">
 </body>

跳转到其他页面

window.location.href=CONTEXT_PATH + "/subjectClassify/showSubjectClassifyNewsList?act=" + WebConst.EDIT+"&entityId="+subjectClassifyId;

window.location.href在当前页面重新打开连接

   <div class="tit"><span onclick="ProdataShow.indexSkip('device')">资产信息</span></div>

        <div class="wrap_sub" style="height: 50%;">
         <div class="wraper">
            <div class="tit"><span onclick="ProdataShow.indexSkip('rushRepair')">应急抢修</span></div>
            <div class="con" id="demo1"></div>
         </div>
        </div>
<script type="text/javascript" src="${rc.contextPath}/view/cusviews/js/index.js"></script>

index.js

$(function(){
	ProdataShow.initOther();
});

/**
 * 首页
 */
var ProdataShow = {
		initOther:function(){
			$(".amap-maptypecontrol").css("top","38px");
			$(".amap-toolbar").css("top","86px");
		},
		
		/**
		 * 首页各个功能跳转
		 * type:device-资产信息、rushRepair-应急抢修、pipeRun-管网运行、produceWork-生产作业
		 * leakCheck-泄露检测
		 */
		indexSkip:function(type){
			if($.isEmptyStr(type)){
				layer.alert('地址不存在!', {icon: 0});
				return;
			}
			var url = ""
			switch(type)
			{
			case 'device':
				url = CONTEXT_PATH + "/cusviews/dev/index";
				break;
			case 'rushRepair':
				url = CONTEXT_PATH + "/cusviews/rush/index";
				break;
			case 'pipeRun':
				url = CONTEXT_PATH + "/cusviews/pipe/index";
				break;
			case 'produceWork':
				url = CONTEXT_PATH + "/cusviews/produce/index";
				break;
			case 'leakCheck':
				url = CONTEXT_PATH + "/cusviews/leak/index";
				break;
			default:
				url = CONTEXT_PATH + "/cusviews/index";
			}
			window.location.href = url;
		}

		
}

定时器倒数跳转其他页面

<script>
window.onload=function  () {
setTimeout(function  () {
   location.href="location1.html";
},3000)

var num=document.getElementById("num")
var nums=3
setInterval(function  () {
    nums--
	num.innerHTML=nums;
},1000)
}

</script>
<center>
<div id="out">
   <div class="one">
   </div>
   <div class="two">
      3秒钟以后跳转
	  <p id="num">
	     3
	  </p>
   </div>
</div>
</center>


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wespten

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

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

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

打赏作者

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

抵扣说明:

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

余额充值