JavaScript consists of three parts. Two of these parts (the core component and Document Object Model) both have defined standards that all browsers are supposed to follow. The third part is the Browser Object Model and there is no official standard for this part of JavaScript. Fortunately for us even though there is no actual standard for this part of JavaScript most browsers have implemented the same commands to do the same (or almost the same) things and for those few areas where a browser does implement something in a different way we can use feature sensing to test which one is supported by the current browser.
Javascript由三部分组成。核心组件和DOM两个部分有标准并被所有的浏览器支持。第三部分浏览器对象模型(BOM)没有官方标准。幸运的是,大多数浏览器用相同的命令来实现某个相同的功能完成相同的事情,只有很少的地方浏览器以不同方式实现。我们可以通过测试哪个是当前浏览器支持的。
So what exactly is the Browser Object Model? The Browser Object Model (or BOM for short) is that part of JavaScript that allows JavaScript to interface and interact with the browser itself.
BOM是浏览器对象模型(BrowserObjectModel)的简称。Javascript将整个浏览器窗口按照实现的功能拆分成若干个对象,这样Javascript语言就可以 以对象的形式来操作浏览器。Window对象是整个BOM的顶层对象。
开发者通过使用BOM,可移动窗口、更改状态栏文本、执行其它不与页面内容发生直接联系的操作。BOM是Javascript应用中唯一没有相关标准的部分,这是BOM真正独特且经常出现问题的所在。BOM主要处理
浏览器窗口与框架,但事实上,浏览器特有的Javascript扩展都被认为是BOM的一部分。
Window对象
window对象表示浏览器中打开的窗口。
如果文档包含框架(frame或iframe标签),浏览器会为HTML文档创建一个window对象,并为每个框架创建一个额外的window对象。
Window对象表示一个浏览器窗口或一个框架。在客户端Javascript中,Window对象是全局对象,所有的表达式都
在当前的环境中计算。也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。
例如,可以只写document,而不必写window.document。
同样,可以把当前对象的方法当作函数来使用,如只写alert(),而不必写Window.alert( ) 。
1.open()方法打开窗口。
window.open(URL,name,features.replace)
<script type="text/javascript">
function open_win(){
window.open("http://www.google.com.hk","");
}
</script>
<form>
<input type="button" value="打开窗口" onclick="open_win()" />
</form>
2.status()方法,设置窗口的状态栏文本
windows.status=sometext
3.resizeBy(width,height)参数表示窗口增加的宽度和高度
resizeTo(width,height)参数表示窗口要达到的宽度和高度
改变窗口大小
4.scrollBy(xnum,ynum)xnum表示文档向右滚动的像素,ynum表示向下滚动的像素数
scrollTo(xpos,ypos)xpos参数表示要在窗口文档显示区左上角显示的文档的X坐标
5.下面是两个有趣的方法
setTimeout()用于指定在指定的毫秒数后调用函数或计算表达式。
语法:
setTimeout(code, millisec)
参数code,必须,即要执行的Javascript代码;参数millisec表示在执行代码前需要等待的毫秒数。
setTimeout()只执行code一次。如果要多次调用,使用setInterval()或者让code自身再次调用setTimeout()。
例1:
function timedMsg(){
var t=setTimeout("alert('2秒!')",2000);
}
<body>
<form>
<input type="button" value="弹出时间警告" onclick="timedMsg()" />
</form>
<p>点击上面的按钮。2 秒后会显示一个消息框。</p>
</body>
Navigator对象——浏览器对象
<script type="text/javascript">
document.write("codename= "+ navigator.appCodeName);
document.write("<br />");
document.write("Name= "+ navigator.appName);
document.write("<br />");
document.write("Version= "+ navigator.appMinorVersion);
document.write("<br />");
document.write("platform= "+ navigator.platform);
document.write("<br />");
</script>
Chrome和safari的name一项都是NetScape(网景)
Screen对象
这个对象包含了用户当前使用的显示器的相关信息
History对象
这个对象代表了用户访问URL的历史信息记录,属性length,返回浏览器历史列表中的URL数量。back()、forward()方法,分别加载history列表中的前一个URL,go()方法加载history列表中的某个具体页面
Location对象
这个对象代表了当前访问的URL的所有信息
可以参考这里:http://javascript.about.com/od/browserobjectmodel/Browser_Object_Model.htm