window、document、Navigator属性

// Secure Contexts: 有些webapi需要安全上下文环境

window.trustedTypes ?
window.frames 返回伪数组元素是 iframe.contentWindow,也许不能访问
// window[0], [1] 返回 window 中的 iframe,不能覆盖 // 在 Firefox 中可以用 js 检测到
[部分元素的 name], [任意元素的 id] 返回元素,他们不能用 js 的方法检测到,因为保存在 window.__proto__.__proto__ 上,它是一个不符合 js 规范的对象。 // Firefox 下 window.__proto__.__proto__ instanceof Proxy 报错
window 属性:parent,top,self
window 的 scroll 方法可以滚动overflow:hidden的文档
// 新增了 scrollend 事件
Window.caches 是Service Workers的一部分,代替application_cache()
Window.devicePixelRatio像素比 // 物理像素/device-width,Chrome Firefox ctrl+/- 会改变这个值, safari bug
window.name 即便页面发生了跳转,这个值依然不会变化,并且可以跨域使用
window.close() 只能关闭用open方法打开的窗口
window.open() 用户操作打开页面// _blank打开的页面相当于open,使用 ref=noopener 让打开的页面不能访问 opener和 document.referrer 防止用户被钓鱼,不支持这个属性值的可以用 open 来模拟(重置opener和打开的页面的url)。
window.matchMedia() 匹配css媒体查询
window.onbeforeunload 的事件处理函数只要返回值不是undefined就显示页面关闭提示框 //函数中其它弹框都不会执行
Location.host 包含端口号
window.onerror // 捕获为处理的错误,可以使用 preventDefault / return true;
window.onnavigator // 草案,切换页面时2个 window 有一段时间共存,期间可以做切换页面的动画
window.getScreens // 多屏幕草案
// 折叠屏幕规范是一些 css 环境变量
window.launchQueue // PWA 启动参数
window.queryLocalFonts // 查询本地字体

页面当前滚动位置:
window.pageYOffset == window.scrollY; // 总是返回 true,scrollY is Editor's Draft
兼容方案:
var y = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;

HTML5属性:
scrollMaxX 非标准属性,可以使用 document.body.scrollWidth - innerWidth 替代
length 返回 iframe的数目
screenY 浏览器在屏幕上的位置,单位 css 像素(手机有状态栏还是0?)
screen 屏幕信息,单位也是 css 像素,avail表示浏览器可用空间
// getScreenDetails 返回多屏幕信息
screen.orientation.lock() // 前提是要全屏状态下,进全屏需要用户互动。当然锁定屏幕方向就可以用代码了
screen.keepAwake// wake-lock API 禁止关屏幕 https://web.dev/wake-lock/
传感器:
  1. Window.ondeviceorientation 设备方向 // 等于screen.onorientationchang
onpagehide/onpageshow 在后退前进时(直接调用缓存,不会产生load相关事件)也能产生load 事件,时间在 load 之后
onblur 跟 document.hidden 效果有点类似,但也有区别,这个表示焦点不在页面上,页面隐藏不一定触发
// mobile中 使用visibilitychange 监听 app 或者标签之间的切换


============================
document.activeElement 类似于焦点元素,但 activeElement 元素并不一定聚焦,比如页面失焦时 元素会失去焦点,但是 activeElement 不会变
document.hidden / document.visibilityState //