window窗口操作

 window对象表示整个浏览器窗口。

1. 窗口操作

q  moveBy(dx,dy)——把浏览器窗口相对当前位置水平移动dx个像素,垂直移动dy个像素。dx值为负数,向左移动窗口,dy值为负数,向上移动窗口。

q  moveTo(x,y)——移动浏览器窗口,使它的左上角位于用户屏幕的(x,y)处。可以使用负数,不过这样会把部分窗口移出屏幕的可视区域。

q  resizeBy(dw,dh)——相对于浏览器窗口的当前大小,把它口的宽度调整dw个像素,高度调整dy个像素。dw为负数,把缩小窗口的宽度,dy为负数,缩小窗口的高度。

q  resizeTo(w,h)——把窗口的宽度调整为w,高度调整为h。不能使用负数。

 

另外

q  IE提供了window.screenLeftwindow.screenTop对象来判断窗口的位置,但未提供任何判断窗口大小的方法。

document.body.offsetWidthdocument.body. offsetHeight属性可以获取视口的大小(显示HTML页的区域),但它们不是标准属性。(FF也支持)

q  Mozilla Firefox提供window.screenXwindow.screenY属性判断窗口的位置。它还提供了window.innerWidthwindow.innerHeight属性来判断视口的大小,window.outerWidthwindow.outerHeight属性判断浏览器窗口自身的大小。

q  OperaSafari提供与Mozilla相同的工具。

 

 

 

function getWidthHeidth()
{
    var WidthHeidth="";
    WidthHeidth+="IE:window.screenLeft:/t"+window.screenLeft;
    WidthHeidth+="/nIE:window.screenTop:/t"+window.screenTop;
    WidthHeidth+="/nFF:window.screenX:/t"+window.screenX;
    WidthHeidth+="/nFF:window.screenY:/t"+window.screenY;
    
    WidthHeidth+="/nIE & FF:window.document.body.offsetWidth:/t"+window.document.body.offsetWidth;
    WidthHeidth+="/nIE & FF:window.document.body.offsetHeight:/t"+window.document.body.offsetHeight;
    
    WidthHeidth+="/nIE & FF:window.document.documentElement.clientWidth:/t"+window.document.documentElement.clientWidth;
    WidthHeidth+="/nIE & FF:window.document.documentElement.clientHeight:/t"+window.document.documentElement.clientHeight;
    
    WidthHeidth+="/nFF:window.innerWidth:/t"+window.innerWidth;
    WidthHeidth+="/nFF:window.innerHeight:/t"+window.innerHeight;
    WidthHeidth+="/nFF:window.outerWidth:/t"+window.outerWidth;
    WidthHeidth+="/nFF:window.outerHeight:/t"+window.outerHeight;
    
    WidthHeidth+="/nIE & FF:window.screen.width:/t"+window.screen.width;//分辨率
    WidthHeidth+="/nIE & FF:window.screen.height:/t"+window.screen.height;//分辨率
    WidthHeidth+="/nIE & FF:window.screen.availWidth:/t"+window.screen.availWidth;
    WidthHeidth+="/nIE & FF:window.screen.availHeight:/t"+window.screen.availHeight;
    
    
    alert(WidthHeidth);
}

 

 

2. 打开/关闭 窗口

JavaScript可以导航到指定的URL,并用window.open()方法打开新窗口。该方法接受四个参数,即要载入新窗口的页面的URL、新窗口的名字(为目标所用)、特性字符串和说明是否用新载入的页面替换当前载入的页面的Boolean值。一般只用前三个参数,因为最后一个参数只有在调用window.open()方法却不打开新窗口时才有效。

如果用已有框架的名字作为window.open()方法的第二个参数调用它,那么URL所指的页面就会被载入该框架。例如,要把页面载入名为“topFrame”的框架,可以使用下面的代码:

这行代码的行为就像用户点击一个链接,该链接的hrefhttp://www.wrox.com/target"topFrame"。专用的框架名_self_parent_top_blank也是有效的。

如果声明的框架名无效,window.open()将打开新窗口,该窗口的特性由第三个参数(特性字符串)决定。如果省略第三个参数,将打开新的浏览器窗口,就像点击了target被设置为_blank的链接。这意味着新浏览器窗口的设置与默认浏览器窗口的设置(工具栏、地址栏和状态栏都是可见的)完全一样。

如果使用第三个参数,该方法就假设应该打开新窗口。特性字符串是用逗号分隔的设置列表,它定义新创建的窗口的某些方面。下表显示了各种设置:

设置

   

left

Number

说明新创建的窗口的左坐标。不能为负数*

top

Number

说明新创建的窗口的上坐标。不能为负数*

height

Number

设置新创建的窗口的高度。该数字不能小于100*

width

Number

设置新创建的窗口的宽度。该数字不能小于100*

resizable

yes,no

判断新窗口是否能通过拖动边线调整大小。默认值是no

scrollable

yes,no

判断新窗口的视口容不下要显示的内容时是否允许滚动。默认值是no

toolbar

yes,no

判断新窗口是否显示工具栏。默认值是no

status

yes,no

判断新窗口是否显示状态栏。默认值是no

location

yes,no

判断新窗口是否显示(Web)地址栏。默认值是no

* 将在第19章详细讨论这些浏览器的安全性特征。

如前所述,特性字符串是用逗号分隔的,因此在逗号或等号前后不能有空格。例如,下面的字符串是无效的:

由于逗号后和几个等号前后的空格,所以该字符串无效。删除空格,它就能正常运行:

 

居中打开

var w=500;
var h=600;
var l=screen.width/2-w/2;
var t=screen.height/2-h/2;
window.open("Menu.aspx","newwin","left="+l+",top="+t+",width="+w+",height="+h+",toolbar=0,status=0,location=0,menubar=0,scrollbars=0,resizable=no");

window.open()方法将返回window对象作为它的函数值,该window对象就是新创建的窗口(如果给定的名字是已有的框架名,则为框架)。用这个对象,可以操作新创建的窗口:

还可以使用该对象调用close()方法关闭新创建的窗口:

如果新创建的窗口中有代码,还可以用下面的代码关闭其自身:

这段代码只对新创建的窗口有效。如果在主浏览器窗口中调用window.close()方法,将得到一条消息:提示该脚本试图关闭窗口,询问是否真的要关闭该窗口。通用规则是,脚本可以关闭它们打开的任何窗口,但不能关闭其他窗口。

IE: js关闭非window.open的窗口时会出现询问对话框。

FF: 不允许js关闭非window.open的窗口,代码不响应。

新窗口还有对打开它的窗口的引用,存放在opener属性中。只在新窗口的最高层window对象才有opener属性,这样用top.opener访问它会更安全。例如:

在这个例子中,打开一个新窗口,然后测试它的opener属性是否等于window对象,从而证明opener属性确实指向window对象(该警告显示"true")。

 

3. 系统对话框

除弹出新的浏览器窗口,还可使用其他方法向用户弹出信息,即利用window对象的alert()confirm()prompt()方法。

4. 状态栏

状态栏是底部边界内的区域

status可以使状态栏的文本暂时改变,而defaultStatus则可在用户离开当前页面前一直改变该文本。例如,在第一次载入页面时,可使用默认的状态栏消息:

你也许还想在用户把鼠标移到某个链接上时显示该链接的信息:

在使用JavaScript URL时这点非常有用,因为默认情况下,当鼠标移到链接上时,浏览器默认在状态栏中显示href特性的值。

5. 时间间隔和暂停

setTimeout(), clearTimeout()

setInterval(), clearInterval()

JavaScript支持暂停和时间间隔,这可有效地告诉浏览器应该何时执行某行代码。所谓暂停,是在指定的毫秒数后执行指定的代码。时间间隔是反复执行指定的代码,每次执行之间等待指定的毫秒数。

可以用window对象的setTimeout()方法设置暂停。该方法接受两个参数,要执行的代码和在执行它之前要等待的毫秒数(1/1000秒)。第一个参数可以是代码串(与eval()函数的参数相同),也可是函数指针。例如,下面的代码都在1秒钟后显示一条警告:

当然,还可以引用以前定义的函数:

调用setTimeout()时,它创建一个数字暂停ID,与操作系统中的进程ID相似。暂停ID本质上是要延迟的进程的ID,在调用setTimeout()后,就不应该再执行它的代码。要取消还未执行的暂停,可调用clearTimeout()方法,并将暂停ID传递给它:

时间间隔与暂停的运行方式相似,只是它无限次地每隔指定的时间段就重复一次指定的代码。可调用setInterval()方法设置时间间隔,它的参数与setTimeout()相同,是要执行的代码和每次执行之间等待的毫秒数。例如:

此外,与setTimeout()类似,setInterval()方法也创建时间间隔ID,以标识要执行的代码。ClearInterval()方法可用这个ID阻止再次执行该代码。显然,这一点在使用时间间隔时更重要,因为如果不取消时间间隔,就会一直执行它,直到页面被卸载为止。下面是时间间隔用法的一个常见示例:

在这段代码中,每隔500毫秒,就对数字iNum进行一次增量运算,直到它达到最大值(iMax),此时该时间间隔将被清除。也可用暂停实现该操作,这样即不必跟踪时间间隔的ID,代码如下:

这段代码使用链接暂停,即setTimeout()执行的代码也调用了setTimeout()。如果在执行过增量运算后,iNum不等于iMax,就调用setTimeout()方法。不必跟踪暂停ID,也不必清除它,因为代码执行后,将销毁暂停ID

那么应该使用哪种方法呢?这由使用情况决定。在执行一组指定的代码前等待一段时间,则使用暂停。如果要反复执行某些代码,就使用时间间隔。

 

 

6,获取或设置滚动条的位置

    alert(document.body.scrollTop);
    alert(document.body.scrollLeft);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值