# Bom

浏览器对象模型

Navigator 对象包含有关浏览器的信息。

属性 描述
appCodeName 返回浏览器的代码名。
appMinorVersion 返回浏览器的次级版本。
appName 返回浏览器的名称。
appVersion 返回浏览器的平台和版本信息。
browserLanguage 返回当前浏览器的语言。
cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值。
cpuClass 返回浏览器系统的 CPU 等级。
onLine 返回指明系统是否处于脱机模式的布尔值。
platform 返回运行浏览器的操作系统平台。
systemLanguage 返回 OS 使用的默认语言。
userAgent 返回由客户机发送服务器的 user-agent 头部的值。可用来判断浏览器内核
userLanguage 返回 OS 的自然语言设置。
navigator.hardwareConcurrency // 检测当前电脑cpu是多少核,可配合webworker工作

# Location

Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。

[http://127.0.0.1:8081/basic/027navigator.html?id=3#location]

属性 描述 -
hash 设置或返回从井号 (#) 开始的 URL(锚)。 #navigator
host 设置或返回主机名和当前 URL 的端口号。 127.0.0.1:8081
hostname 设置或返回当前 URL 的主机名。 127.0.0.1
href 设置或返回完整的 URL。 http://127.0.0.1:8081/basic/027navigator.html?id=3#location
origin 返回一个URL的协议,主机名和端口号 http://127.0.0.1:8081
pathname 设置或返回当前 URL 的路径部分。 /basic/027navigator.html
port 设置或返回当前 URL 的端口号。 8081
protocol 设置或返回当前 URL 的协议。 http:
search 设置或返回从问号 (?) 开始的 URL(查询部分)。 ?id=3
// 例如当前网址是 https://juejin.im/timeline/frontend?a=10&b=10#some
console.log(location.href) // https://juejin.im/timeline/frontend?a=10&b=10#some
console.log(location.protocol) // https:
console.log(location.pathname) // /timeline/frontend
console.log(location.search) // ?a=10&b=10
console.log(location.hash) // #some 

Location 对象方法

属性 描述
assign() 加载新的文档。
reload() 重新加载当前文档。
replace() 用新的文档替换当前文档。

location.reload(true),Firefox 对于该方法支持一个非标准的 forceGet boolean 参数 ,当值为 true 时,将强制 Firefox 从服务器加载页面资源。但是在其他浏览器中任何参数都是无效的,location.reload() 执行时将会忽略它们并且不会有任何效果。

# URLSearchParams匹配参数方法

var url = new URL('https://example.com?foo=1&bar=2');

// Retrieve params via url.search, passed into ctor
var params = new URLSearchParams(url.search);

console.log(params)//URLSearchParams {}
console.log(params.get('bar'))// 2
for(let i of params){
	console.log(i)
	//['foo', '1']
	//['bar', '2']
}

# History

History 对象包含用户(在浏览器窗口中)访问过的 URL。

History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

属性 描述
length 返回浏览器历史列表中的 URL 数量。
方法 描述
back() 加载 history 列表中的前一个 URL。
forward() 加载 history 列表中的下一个 URL。
go() 可加载历史列表中的某个具体的页面。

go() 方法。

history.go(number)

该参数可以是数字,使用的是要访问的 URL 在 History 的 URL 列表中的相对位置。(-1上一个页面,1前进一个页面)。

MDN中go不支持url,测试了也没支持url

# popstate事件

当活动历史记录条目更改时,将触发popstate事件。 如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,popstate事件的state属性包含历史条目的状态对象的副本。

需要注意的是调用history.pushState()或history.replaceState()不会触发popstate事件。只有在做出浏览器动作时,才会触发该事件,如用户点击浏览器的回退按钮(或者在Javascript代码中调用 history.back()或者history.forward()方法

不同的浏览器在加载页面时处理popstate事件的形式存在差异。页面加载时Chrome和Safari通常会触发(emit )popstate事件,但Firefox则不会。

# history.replaceState【H5】

history.replaceState(stateObj, title[, url]);

replaceState()方法使用state objects, title,和 URL 作为参数, 修改当前历史记录实体,如果想更新当前的state对象或者当前历史实体的URL来响应用户的的动作的话这个方法将会非常有用。

# history.pushState()【H5】

向当前浏览器会话的历史堆栈中添加一个状态(state)

history.pushState(state, title[, url])
window.onpopstate = function(event) {
  alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};
//绑定事件处理函数.
history.pushState({page: 1}, "title 1", "?page=1");    //添加并激活一个历史记录条目 http://example.com/example.html?page=1,条目索引为1
history.pushState({page: 2}, "title 2", "?page=2");    //添加并激活一个历史记录条目 http://example.com/example.html?page=2,条目索引为2
history.replaceState({page: 3}, "title 3", "?page=3"); //修改当前激活的历史记录条目 http://ex..?page=2 变为 http://ex..?page=3,条目索引为3
history.back(); // 弹出 "location: http://example.com/example.html?page=1, state: {"page":1}"
history.back(); // 弹出 "location: http://example.com/example.html, state: null
history.go(2);  // 弹出 "location: http://example.com/example.html?page=3, state: {"page":3}

# 刷新页面的方法

  • history.go(0)
  • location.reload()
  • location=location
  • location.assign(location)
  • location.replace(location)
  • location.href='https://www.baidu.com'
  • window.open("https://baidu.com","_self")

参考 (opens new window)

最后更新: 12/7/2024, 7:09:44 PM