八、Window - 浏览器对象模型

Window - 浏览器对象模型

浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"。

浏览器对象模型(Browser Object Model (BOM))

一 Window 对象

所有浏览器都支持 window 对象。它表示浏览器窗口。

HTML DOM 的 document 也是 window 对象的属性之一:

window.document.getElementById("header");

与此相同:

document.getElementById("header");

二 Window 尺寸

有三种方法能够确定浏览器窗口的尺寸。

对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

  • window.innerHeight - 浏览器窗口的内部高度(包括滚动条) 可见区域

  • window.innerWidth - 浏览器窗口的内部宽度(包括滚动条) 可见区域

  • window.document.body.offsetHeight
    window.document.body.offsetWidth
    //获取的是 整个body体的宽度和高度 需要注意去掉HTML5的头
    

对于 Internet Explorer 8、7、6、5:

  • document.documentElement.clientHeight
  • document.documentElement.clientWidth

或者

  • document.body.clientHeight == innerHeight 网页可见区域高
  • document.body.clientWidth == innerWidth 网页可见区域宽
document.write(window.innerWidth+'<br>');
document.write(window.innerHeight+'<br>');
document.write(window.document.body.offsetWidth+'<br>');
document.write(window.document.body.offsetHeight+'<br>');
document.write(window.document.body.clientWidth+'<br>');
document.write(window.document.body.clientHeight+'<br>');

三 其他 Window 方法

一些其他方法:

  • window.open() - 打开新窗口
  • window.close() - 关闭当前窗口
  • window.moveTo() - 移动当前窗口(不用)
  • window.resizeTo() - 调整当前窗口的尺寸

四 Window Screen 可用宽度

screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如窗口任务栏。

实例:

返回您的屏幕的可用宽度:

<script>
    document.write("可用宽度: " + screen.availWidth);
</script>

五 Window Screen 可用高度

screen.availHeight 属性返回访问者屏幕的高度,以像素计,减去界面特性,比如窗口任务栏

返回您的屏幕的可用高度:

<script>
    document.write("可用高度: " + screen.availHeight);
</script>

六 Window Location 跳转

window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

window.location 对象在编写时可不使用 window 这个前缀。 一些例子:

一些实例:

  • location.hostname 返回 web 主机的域名

  • Location.href 属性返回当前的URL地址

  • Location.href=url 跳转新的地址

  • location.pathname 返回当前页面的路径和文件名

  • location.port 返回 web 主机的端口 (80 或 443)

  • location.protocol 返回所使用的 web 协议(http:// 或 https://)

  • location.assign(url) 方法加载新的文档。

  • window.location.replace(url) : 通过加载 URL 指定的文档来替换当前文档 ,这个方法是替换当前窗口页面,前后两个页面共用一个窗口,所以是没有后退返回上一页的

  • window.location.reload() 方法用于刷新当前文档。

  • 说明
    如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。
    如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。
    
  • window.location.search 属性用于获取url的参数部分

七 Window History 历史

  • history.back() - 与在浏览器点击后退按钮相同 加载历史列表中的前一个 URL
  • history.forward() - 与在浏览器中点击向前按钮相同 加载历史列表中的下一个 URL。
  • history.go(+1) 前进
  • history.go(-1) 后退+刷新 不同的浏览器有区别

实例

<html>
<head>
<script>
function goBack()
  {
  window.history.back()
  }
function goforward()
  {
  window.history.forward()
  }
</script>
</head>
<body>
  <input type="button" value="Back" onclick="goBack()">
  <input type="button" value="Back" onclick="goforward()">
  <input type="button" value="go+1" onclick="javascript:history.go(+1)">
  <input type="button" value="go-1" onclick="javascript:history.go(-1)">
</body>
</html>

八 Window Navigator 对象包含有关访问者浏览器的信息。

浏览器代号: " + navigator.appCodeName
浏览器名称: " + navigator.appName
浏览器版本: " + navigator.appVersion
启用Cookies: " + navigator.cookieEnabled
硬件平台: " + navigator.platform
用户代理: " + navigator.userAgent
用户代理语言: " + navigator.systemLanguage

九 JavaScript 弹窗

可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。

windows可以不加

(1) 警告框

警告框经常用于确保用户可以得到某些信息。

当警告框出现后,用户需要点击确定按钮才能继续进行操作。

语法

window.alert("sometext");

(2) 确认框

确认框通常用于验证是否接受用户操作。

当确认卡弹出时,用户可以点击 "确认" 或者 "取消" 来确定用户操作。

当你点击 "确认", 确认框返回 true, 如果点击 "取消", 确认框返回 false。

语法

window.confirm("sometext"); [kənˈfɜ:rm]

实例
var r=confirm("按下按钮");
if (r==true)
{
    x="你按下了\"确定\"按钮!";
}
else
{
    x="你按下了\"取消\"按钮!";
}

(3) 提示框

提示框经常用于提示用户在进入页面前输入某个值。

当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。

如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

语法

window.prompt("sometext","defaultvalue"); [prɑ:mpt]

实例

var person=prompt("请输入你的名字","Harry Potter");
if (person!=null && person!="")
{
    x="你好 " + person + "! 今天感觉如何?";
    document.getElementById("demo").innerHTML=x;
}

(4) 换行

弹窗使用 反斜杠 + "n"(\n) 来设置换行。

实例

alert("Hello\nHow are you?");

十 JavaScript 计时事件

定时执行
  • setInterval() - 间隔指定的毫秒数不停地执行指定的代码。
  • setTimeout() - 暂停指定的毫秒数后执行指定的代码

只执行一次i

  • setTimeout() 方法
  • clearTimeout() 方法用于停止执行setTimeout()方法的函数代码。

Note: setInterval() 和 setTimeout() 是 HTML DOM Window对象的两个方法。

单位是毫秒 1000毫秒=1秒

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容