日期:2014-05-16  浏览次数:20397 次

javascript学习之BOM come from 北风网+瓢城俱乐部,特此感谢!
window.blur()使窗体或对象失去焦点;

与之相反的代码是window.focus();但是各个浏览器之间有冲突

并不是所有的浏览器都支持这两个代码

但有的浏览器会屏掉这个弹窗

为了防止浏览器将弹窗屏屏蔽,可以将弹窗代码加到事件

中去,这样浏览器会识别出这个弹窗是由用户触发的,

因此不会屏蔽

下面这段单独的代码可以会遇到某些浏览器的屏蔽

window.open("url",name,features.replace);

但我们可以将其加入到某个事件 中,

如document.onclick=function(){

   window.open();

}

window.open是一个比较重要的函数

如window.open("www.baidu.com" ,"_blank")

但其中 也有一个重要的技巧,下面这段代码

window.open("url1","newwindow");

window.open("url2","newwindow");

window.open("url3","newwindow")

这段的代码的效果将是只打开一个窗口,而三个url虽然是不同的

的,但是它们打开的新窗口的名字是相同的,所以只会打开一个窗口

而在这一个窗口中依次显示三个网址,也就是url1会先显示,然后url2会覆盖url1,然后url3会覆盖url2,这三个地址是依次在同一个窗口中显示 的,

解决这个问题最笨的办法就是给要打开的窗口取不同的名字

window.open("url1","newwindow1");

window.open("url2","newwindow2");

window.open("url3","newwindow3")

另一个重要的技巧是这样写

window.open("url1","_blank");

window.open("url2","_blank");

window.open("url3","_blank")

在这里这个_blank有特殊的意义,表示每次都要在新的窗口中打开url

另一个在此有意义的词语就是_self

window.open("url1","_self")

window.open("url2","_self")

则这段代码的效果将会在当前窗口中依次打开两个url

而不会打开新的窗口

这个函数的实现与浏览器对安全性的设置有关

screen是一个对象,表示屏幕,如screen.width表示当前屏幕的

而screen.heigh表示当前屏幕的高度



关闭窗口

window.close()这段代码只会关闭由javascrip打开的窗口,即是由

window.open()所打开的窗口才能由window.close()关闭

window.open()是有返回值的,返回的即是object window对象

即是一个新窗体的引用

如可以这样写一段代码

var w=window.open(“url”,"");

w.close();

这样就可以关闭由window.open()打开的窗体

window.moveto(0,0);

但这段代码会出错,var w=window.open;

var d = w.document;则会出错,因为window.open一般打开的是

其它网站的窗体,而这段代码要在本网址内访问其它网址的内容

这就会导致安全问题,javascript在这里不支持,所以会出错,

但是如果window.open("url","_blank")中的url是指向本页面的

url则可以获得打开的document

子窗口和父窗口通信的问题的问题

这里先介绍对话框javascript中有三种对话框

alert(str) ;弹出消息对话框,对话框 中有一个确定按钮

confirm(str);弹出一个消息对话框

对话框中包含一个确定按钮与取消按钮

prompt(str,defaultValue);弹出消息对话框,对话框中包含一个确定按钮

一个取消按钮和一个文本输入框,由于浏览器之间的兼容问题,若没有第二个参数,即文本框中默认值时也最好提供一个空字符串

即prompt(str,"");

window.defaultStatus属性 改变浏览器状态栏的显示

window.status属性 临时改变浏览器状态栏的显示

时间等待与间隔函数

setTimeout()暂停指定的这毫秒数后执行指定的代码

clearTimeout()取消指定的setTimeout函数将要执行的代码

setInterval()间隔指定的毫秒数不停地执行指定的代码

clearInterval()取消指定的setInterval函数要执行的代码

setTimeout与setInterval方法有两个参数,第一个对数可以为字条串形式的代码,也可以是函数引用,第二个参数为间隔这毫秒数,它们的返回 是一个可用于对应clear方法的数字ID

//status

setTimeout这个函数是很重要 的,有两个参数,第一个参数是代码,第二个是要间隔的毫秒数

如setTimeout("alert("wqe")",10000)间隔十秒执行弹出框,但是这个代码是有问题,因为""是不能嵌套的,是需要进行转义

这种用法是不提倡的,因为这样写的代码是死的,还不能进行传值

所以可以用下面这段代码的形式

setTimeout(function(){

},1000)用一个函数来取代代码的这个函数会返回一个值,如

var t = setTimeout()

而clearTimeout(t)则可以来取消这段间隔执行的代码,

类似的应用也适用于setInternal()和clearInternal()



下面要讲的一个对象是History这个对象的

应用意义并不是太大

其中 有三个函数

back()加载history列表中的前一个url,这个函数还是有时候会用到的,

forword()加载history列表中的下一个url

go(num)加载history列表中的某个具体页面这个函数没有什么特殊的意

这三个函数中的应用很少,因为谁也不知道用户的收藏夹里具体存在的页面是什么,所以没有什么实际的应用,可以忽略



下面要讲的一个对象是Location对象

在火狐中安装了firedebug后会有一个console对象

location.href=www.baidu.com这句代码的效果相当于在当前的窗口中输入www.baidu.com这段代码也等同于location.assign(www.baidu.com)

reload()相当于刷新的功能

如location.reload(true)表示强制刷新

但location.href和location.assign()会有副 作用,即在将当前页面转到目标地址后,会在历史记录中留下痕迹,如果这条语句使用的少也没有多少关系,但如果大量使用的话,会产生很多垃圾文件,及对浏览