history
go(n)
:n为正时向前n页,n为负时后退n页window.history.go(-2); // 返回上上页
window.history.go(-1); // 返回上一页
window.history.go(0); // 刷新当前页
window.history.go(1); // 前往下一页
history.back
是用来会退历史记录的,就是回到前一个页面,就相当于浏览器上的返回按钮window.history.back();
history.forword
是到下一个历史记录里面,也就是到下一个页面。window.history.forward();
pathname
、search
属性在HashRouter
路由模式下会失效,只能在BrowserRouter
路由模式下使用
https://www.huaijiuwang.com.cn/
属性 | 值 | 说明 |
---|---|---|
location.portocol | https: | 页面使用的协议,通常是’http: ‘或’https: ’ |
location.hostname | www.huaijiuwang.com.cn | 服务器域名 |
location.port | 443 | 请求的端口号 |
location.host | www.huaijiuwang.com.cn:443 | 服务器名及端口号 |
location.origin | https://www.huaijiuwang.com.cn/ | url的源地址,只读 |
location.href | 完整的url地址 | 等价于window.location |
search
指的是端口号后面紧接着的?
号,而不是#
号后面的?
号)location.hash
:URL散列值(#
号之后的部分,包括#
号)location.search
:URL的查询字符串(?
号后面的部分,包括?
号)- url为: // https://www.huaijiuwang.com.cn/blog/blogDetails?blogId=88
console.log(location.hash) // “”
console.log(location.search ) // "?blogId=88"
// 指定协议跳转
location.assign("http://www.baidu.com")
/* 等同于 */
location.href = "http://www.baidu.com"
// 以当前页面协议跳转
location.assign("//www.baidu.com")
/* 等同于 */
location.href = "//www.baidu.com"
// 重新加载,可能是从缓存加载
location.reload();
// 重新加载,从服务器加载
location.reload(true)
alert()
是在浏览器弹出一个提示框window.alert("我是一个提示框");
confirm()
是在浏览器弹出一个询问框window.confirm("我是一个询问框");
prompt()
是在浏览器弹出一个输入框window.prompt("请输入内容");
setTimeout(要执行的函数,多少时间以后执行);
var timerId = setTimeout(function (){
console.log('我执行了');
},1000);
console.log(timerId) // 1
关闭定时器:
clearTimeout
var timerId = setTimeout(function(){
console.log("倒计时定时器");
},1000);
clearTimeout(timerId); // 关闭倒计时定时器
clearTimeout
关闭setTimeout
,但是其实是可以通用的var timeId = setTimeout(function(){
console.log('倒计时定时器');
},1000);
// 关闭倒计时定时器
clearInterval(timerId);
定时器的返回值
setTimeout
和 setInterval
的var timerId = setTimeout(function(){
console.log('倒计时定时器');
},1000);
var timerId2 = setInterval(function(){
console.log("间隔定时器");
},1000);
console.log(timerId) // 1
console.log(timerId2) // 2
setInterval(要执行的函数,间隔多少时间);
var timerId = setInterval(function (){
console.log('我执行了');
},1000);
关闭定时器:
clearInterval
var timerId2 = setInterval(function(){
console.log("间隔定时器");
},1000);
clearInterval(timeId2); // 关闭间隔定时器
clearInterval
关闭setInterval
,但是其实是可以通用的var timeId2 = setInterval(function(){
console.log('间隔定时器');
},1000);
// 关闭间隔定时器
clearTimeout(timerId2);
定时器的返回值
setTimeout
和 setInterval
的var timerId = setTimeout(function(){
console.log('倒计时定时器');
},1000);
var timerId2 = setInterval(function(){
console.log("间隔定时器");
},1000);
console.log(timerId) // 1
console.log(timerId2) // 2
/*
strUrl: 要打开的网址地址
strWindowName:
1. 新窗口名称
2. _blank:新窗口打开
3. _self:当前窗口打开
strWindowFeatures: 窗口特性,比如宽高,逗号分割
*/
const WindowObjectReference = open(strUrl, strWindowName, strWindowFeatures)
/*
WindowObjectReference:
打开的新窗口对象的引用。
如果调用失败,返回值会是 null。
如果父子窗口满足“同源策略”,你可以通过这个引用访问新窗口的属性或方法。
*/
// 如果strUrl 是一个空值,那么打开的窗口将会是带有默认工具栏的空白窗口
window.open()
// 新窗口打开百度
window.open("https://www.baidu.com/","_blank")
1. 如果已经存在以 strWindowName 为名称的窗口,则不再打开一个新窗口,而是把 strUrl 加载到这个窗口中。
2. 在这种情况下,方法的返回值是这个已经打开的窗口,并忽略参数 strWindowFeatures。
3. strUrl设为空字符串时,可以在不改变窗口地址的情况下获得一个已经打开的同名窗口的引用。
4. 如果要在每次调用 window.open()时都打开一个新窗口,则要把参数 strWindowName 设置为 _blank。
window.close() // 关闭
// 用于存储将要打开的窗口(的引用)的全局变量
var openedWindow;
function openWindow() {
openedWindow = window.open("moreinfo.htm");
}
function closeOpenedWindow() {
openedWindow.close();
}
screenLeft
:表示窗口相对于屏幕左侧的位置,返回值的单位是像素值screenTop
:表示窗口相对于屏幕顶部的位置,返回值的单位是像素值console.log("screenLeft 位置:", window.screenLeft);
console.log("screenTop 位置:", window.screenTop);
依浏览器而定,以下方法可能会部分或全部禁用
moveTo
:接收要移动到的新位置的绝对坐标 x和ymoveBy
:接收相对当前位置在两个方向上移动的像素值// 把窗口移动到左上角
window.moveTo(0,0)
// 把窗口移动到坐标位置(200,300)
window.moveTo(200,300)
// 把窗口向下移动100像素
window.moveBy(0,100)
// 把窗口向左移动10像素
window.moveBy(-10,0)
console.log("innerWidth 宽度:",window.innerWidth);
// innerWidth 宽度: 1002
console.log("innerHeight 高度:",window.innerHeight);
// innerHeight 高度: 907
console.log("outerWidth 宽度:",window.outerWidth);
// outerWidth 宽度: 1680
console.log("outerHeight 高度:",window.outerHeight);
// outerHeight 高度: 1010
浏览器的 onscroll 事件
- 浏览器内的内容即然可以滚动,那么我们就可以获取到浏览器滚动的距离
- 思考一个问题?
- 浏览器真的滚动了吗?
- 其实我们的浏览器是没有滚动的,是一直在那里
- 滚动的是什么?是我们的页面
- 所以说,其实浏览器没有动,只不过是页面向上走了
window.onscroll = function(){
console.log('浏览器滚动了');
}
Safari 浏览器使用的是
window.pageXOffset
和window.pageYOffset
scrollX
:文档向右滚动的距离,当窗口无法展示整个页面,这时候就需要滚动查看。scrollY
:文档向下滚动的距离,当窗口无法展示整个页面,这时候就需要滚动查看。console.log("scrollX 向右滚动了多少距离:",window.scrollX);
// scrollX 向右滚动了多少距离: 0
console.log("scrollY 向下滚动了多少距离:",window.scrollY);
// scrollY 向下滚动了多少距离: 0
// 滚动到页面左上角
window.scrollTo(0,0)
// 滚动到页面左边100像素和顶部200像素的位置
window.scrollTo(100,200)
// 相对于当前视口向下滚动100像素
window.scrollBy(0,100)
// 相对于当前视口向右滚动40像素
window.scrollBy(40,0)
属性 | 描述 |
---|---|
screen.height | 获取整个屏幕的高 |
screen.width | 获取整个屏幕的宽 |
screen.availHeight | 整个屏幕的高减去系统部件的高( 可用的屏幕高度 ) |
screen.availWidth | 整个屏幕的宽减去系统部件的宽(可用的屏幕宽度 ) |
navigator
属性 | 描述 |
---|---|
navigator.userAgent | 获取浏览器的整体信息 |
navigator.appName | 获取浏览器名称 |
navigator.appVersion | 获取浏览器的版本号 |
navigator.platform | 获取当前计算机的操作系统 |
JavaScript DOM(文档对象模型,Document Object Model)是一种跨平台的、语言独立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM 将文档视为树结构,其中每个节点都是文档的一部分,例如文档本身、元素、属性和文本内容。
DOM 树是由节点构成的,这些节点包括:
<div>
、<p>
、<span>
等 HTML 标签。<input type="text">
中的 type
。<!-- 这是一个注释 -->
。<!DOCTYPE html>
。DOM 操作可以分为几种类型:
创建和插入节点:
创建新节点:document.createElement(tagName)
创建一个新的元素节点。
添加子节点:element.appendChild(newChild)
将新节点添加到指定元素的子节点列表的末尾。
插入节点:element.insertBefore(newChild, referenceChild)
在参考节点前插入新节点。
删除节点:
element.removeChild(child)
删除指定的子节点。element.removeChild(node)
也可以将节点从文档中移除。修改节点内容:
element.textContent
或 element.innerHTML
可以获取或设置元素的文本或 HTML 内容。element.setAttribute(name, value)
设置元素的属性,element.getAttribute(name)
获取元素的属性值。事件处理:
element.addEventListener(type, listener)
为指定元素添加事件监听器。element.dispatchEvent(event)
在指定元素上触发事件。查询和选择元素:
document.getElementsByTagName(tagName)
获取文档中所有特定标签名的元素。document.getElementsByClassName(className)
获取文档中所有具有特定类名的元素。document.getElementById(elementId)
获取文档中具有特定 ID 的元素。document.querySelector(selector)
和 document.querySelectorAll(selector)
通过 CSS 选择器获取元素。事件是用户或浏览器执行的操作,例如点击、滚动、加载等。DOM 事件模型包括以下几个部分:
随着 Web 标准的发展,DOM API 也在不断演进。现代浏览器通常遵循 W3C 标准,但不同浏览器和版本之间可能存在差异。开发者需要关注这些差异,并可能需要使用 polyfills 或者特性检测来确保代码的兼容性。
DOM 是 JavaScript 与网页交互的桥梁,通过 DOM,开发者可以创建动态和交云的网页应用。了解 DOM 的结构、操作和事件处理是每个前端开发者的基本功。随着现代前端框架和库的出现,DOM 操作变得更加高效和便捷,但理解其背后的原理仍然至关重要。
评论
登录后才可以进行评论哦!