WebAPI详解

WebAPI详解


任何开发语言都有自己的API,那么API是什么呢?
API (Application Programming Interface )
概念: 是一些预先定义的函数
目的: 提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而无需访问源码,或理解内部工作机制的细节。

那么什么是WebAPI呢?
概念: 浏览器提供的一套操作浏览器功能和页面元素的API。

概念
API应用程序编程接口,是一些预先定义的函数
WebAPI浏览器提供的一套操作浏览器功能和页面元素的API。

  • JavaScript组成的三部分

JavaScript的三大组成部分


 接下来 我着重讲下JavaScript中的DOM和BOM
  • DOM---------文档对象模型

  • 一套JavaScript动态操作网页内容的API(函数)
  • 当页面被加载时,浏览器会创建页面的文档对象模型 生成一颗DOM树(HTML DOM模型被构造成对象的树)
  • 文档:一个网页可以称为文档
  • 节点:网页中的所有内容都是节点(标签、属性、文本、注释等)
  • 元素:网页中的标签
  • 属性:标签的属性

  • 模拟文档树结构

DOM树


DOM主要由两部分构成(动态操作+网页内容)

  • 动态操作-----增删改查
  • ㈠ 查-----查元素、查属性、查内容
  • 1.查元素

①根据id名获取元素 如果没有这个id名 那么会得到一个null。
参数:元素id名字符串
返回值:元素对象(又称为DOM对象) / null

<div id = 'main'></div>

<script>
var div = document.getElementById('main');
console.log(div);
//获取到的数据类型是HTMLDIVElement,对象都有类型的
//id名具有唯一性,部分浏览器支持直接使用id名访问元素,但是不是标准方式,不推荐使用
</script>

②根据标签名获取元素 如果没有这个标签名 那么会得到一个空数组
参数:标签名字符串
返回值:标签数组(伪数组)

<input type = 'text' />

<script>
var inputs = document.getElementByTagName('input');
//获取到的是标签数组 要想获取每一个元素 需要遍历数组
for(var i = 0 ; i < inputs.length; i++){
		var input = inputs[i];
		console.log(input);
}
</script>

③根据类名获取元素-----存在兼容性问题(IE8及以下不支持),尽量少用
参数:类名字符串
返回值:类名数组(伪数组)

<div class = 'main'></div>

<script>
var mains = document.getElementByClassName('main');
//获取到的是类名数组 要想获取每一个元素 需要遍历数组
for(var i = 0; i < mains.length; i++){
		var main = main[i];
		console.log(main);
}
</script>

④根据name属性值获取表单元素
name属性是表单元素特有的默认属性
参数:name属性值字符串
返回值:伪数组

<input type = 'text' name = 'txt' />

<script>
var inputs = document.getElementByName('txt');
//获取到的是伪数组 要想获取每一个元素 需要遍历数组
for(var i = 0 ; i < inputs.length ; i++){
		var input = inputs[i];
		console.log(input);
}
</script>

⑤根据选择器获取元素
querySelector(‘选择器’); 只会找到满足条件的第一个对象 如果找不到则返回null
querySelectorAll(‘选择器’); 会找到所有满足条件的对象伪数组,如果找不到则返回空数组

<div class = 'box'></div>
<div class = 'box'></div>

<script>
//获取到的是满足第一个条件的对象
var box = document.querySeletor(.box);
console.log(box);

//获取的的是满足条件的所有对象的数组
var boxes = document.querySeletorAll(.box);
for(va i = 0 ; i < boxes.length; i++){
		var box = boxes[i];
		console.log(box);
}
</script>
查元素语法
根据id名获取元素document.getElementById(‘id名’);
根据标签名获取元素document.getElementsByTagName(‘标签名’);
根据类名获取元素document.getElementsByClassName ( “类名” ) ;
根据name属性值获取表单元素document.getElementsByName(‘表单元素name属性的值’);
根据选择器获取第一个元素querySelector(‘选择器’) ;
根据选择器获取所有元素querySelectorAll(‘选择器’);

  • 2.查属性
  • ①点语法--------主要用于设置标准属性
    获取元素的属性:元素.属性名
    设置元素的属性:元素.属性名 = 属性值;
    ★★注意
    ★class在js中是一个关键字,如果想要获取类名需要使用className
    ★点语法获取元素的属性,只能获取行内样式的属性值,无法获取行外(内联/外联)样式的属性值,如果获取行外样式的属性值,会得到空字符串
    ★点语法设置元素的属性既可以设置行内样式的属性值,也可以设置行外(内联/外联)样式的属性值
    ★点语法获取到的一定是一个字符串,而且带单位
    ★如果css样式的属性中带有 - ,例如background-color,那么使用js获取和设置这些属性的时候需要使用驼峰命名(因为 - 符号不符合js的命名规范)
    ★修改类名需要注意会覆盖掉原本的类样式,所以一般是在原先类名的基础上加一个类,多个类名之间用空格隔开
    ★点语法能获取行内标准属性和js点语法动态添加的自定义属性,不能获取行内自定义属性和行外属性
  • ②字符串语法
    元素['属性名']
  • ③attribute方法
    设置属性 元素.setAttribute('属性名',属性值);
    获取属性 元素.getAttribute('属性名');
    删除属性 元素.removeAttribute('属性名');
    ▷用attribute方法删除属性是彻底删除 属性名和属性值都删除
    ▷用点语法删除属性只能删除属性值,不能删除属性名
    ★★注意
    ★用attribute方法设置的属性只能使用attribute方法来获取
    ★attribute方法能获取行内标准属性、行内自定义属性和setAttribute动态添加的属性,不能获取js点语法动态添加的自定义属性和行外属性
    ★★总结★
    点语法操作标准属性
    attribute方法操作自定义属性
  • ④getComputedStyle(元素,null)
    作用:获取一切样式属性
    第一个参数是要获取的元素
    第二个参数是伪元素,一般设置为null
    返回值是一个对象(存储元素所有样式属性)
    ★★注意
    ★可以获取所有的样式属性
    ★获取的是字符串 带单位
    ★只能获取 不能修改
    ★★总结★★
    应用于获取元素属性
查属性语法
点语法元素.属性名
字符串语法元素 [‘属性名’]
attribute方法元素.getAttribute(‘属性名’);
getComputedStylegetComputedStyle(元素,null)

  • 3.查内容
  • console.log(innerText );
  • console.log( innerHTML);
innerHTMLinnerText
获取的是元素中的内容(包含文字和标签)只能获取文字,无法识别标签
设置时会解析标签设置时会把标签当做文本
没有浏览器兼容问题非W3C标准语法 部分浏览器不支持

  • ㈡ 增-----创建元素、将元素增加到页面
  • 1.创建元素
  • ①document.write();
    解析字符串识别标签,慎重使用,有可能会覆盖原本内容
    ▷覆盖内容的原理(了解即可)
    是因为编译器从上往下解析HTML的时候会形成一个文档流,这个文档流会在文档中所有的HTML标签解析后关闭。
    不会覆盖的情况是如果在关闭这个文档流之前调用就不会覆盖原本内容
    如果在关闭文档流之后调用,会再开启一个新的文档流,此时就会把上一个文档流的内容覆盖掉。
  • ②innerHTML
    解析字符串识别标签
    直接赋值会替换原本内容,一般使用 += 拼接
    创建元素过多时,会耗损性能
var box = document.getElementById('box');
box.innerHTML += '新内容<p>新标签</p>';
  • ③document.createElement();
    动态创建一个DOM对象(注意创建的是一个空标签)
    需要给标签设置属性
    需要使用appendChild来添加到HTML中
var div = document.createElement('div');
document.body.appendChild(div);
创建元素的三种方法作用及注意点
document.write();解析字符串识别标签,慎重使用,有可能会覆盖原本内容
innerHTML同document.write(); 创建元素过多会耗损性能 ,因为字符串具有恒定性,每一次添加都会开辟新的空间
document.createElement();动态创建一个空对象在内存中,不会自动加到HTML中,需要手动添加属性,和需要使用appendChild手动添加到HTML中

  • 2.增加到页面

  • ①父元素.appendChild(子元素);
    ★如果是一个新的子元素,则默认会添加到最后
    ★如果是一个已经存在的子元素,相当于移动到最后面
    ★如果添加的元素中有子元素,子元素也会一起移动到最后面

  • ②父元素.insertBefore(子元素,指定位置的前面);
    ★如果是一个新的子元素,则插入到指定的位置(第二个参数的前面)
    ★如果是已经存在的元素,则移动到指定的位置(第二个参数的前面)
    ★如果元素有子元素,则一起移动到指定的位置(第二个参数的前面)

  • ㈢ 改-------------替换子元素
  • 父元素.replaceChild(子元素,要被替换的元素)
    ★如果是一个新的子元素,则直接替换(将第二个参数替换掉)
    ★如果是已经存在的元素,则会将新元素移动到旧元素位置,并且将旧元素移除
    ★如果元素有子元素,则子元素会随父元素一起替换

  • ㈣ 删-------------移除子元素
  • 父元素.removeChild(子元素)
    ★父元素不能移出自己(不能自杀)
    ★父元素不能移出别人的子元素
    ★父元素只能移出自己的子元素


  • 网页内容
  • ㈠ 节点
  • 在HTML文档中,一切皆节点
    节点主要包括元素节点、属性节点、文本节点、注释节点、文档节点
  • 节点三要素
    节点类型 nodeType
    节点名称 nodeName
    节点值 nodeValue
    在这里插入图片描述
  • 查元素节点
查看元素节点语法
查看元素节点类型console.log ( 元素.nodeType );
查看元素节点名称console.log ( 元素.nodeName );
查看元素节点值console.log ( 元素.nodeValue );
  • 查属性节点
查看属性节点语法
查看属性节点类型console.log ( 元素.attributes[0].nodeType );
查看属性节点名称console.log ( 元素.attributes[0].nodeName );
查看属性节点值console.log ( 元素.attributes[0].nodeValue );

  • ㈡节点的操作
  • 获取子节点和子元素
获取子节点和子元素语法
获取子节点元素.childNodes
获取子元素元素.children
  • 获取兄弟节点和兄弟元素
获取兄弟节点和兄弟元素语法
获取上一个节点元素.previousSibling
获取下一个节点元素.nextSibling
获取上一个元素元素…nextElementSibling
获取上一个节点元素.previousElementSibling
  • 获取第一个子节点和第一个子元素
获取第一个子节点和第一个子元素语法
获取第一个子节点元素…firstChild
获取第一个子元素元素.firstElementChild
  • 获取最后一个节点和最后一个元素
获取最后一个节点和最后一个元素语法
获取最后一个节点元素.lastChild
获取最后一个元素元素.lastElementChild
  • 获取父节点
获取父节点语法
获取父节点元素.parentNode

★注意
★一个元素的父节点一定是一个元素,只有元素才有子节点

  • 克隆节点
    ★注意 克隆节点这个函数的参数是个布尔类型,默认为false
克隆节点语法
克隆这个元素的一切内容(行内属性、子节点、内容)元素.cloneNode(true);
克隆复制这个元素的本身(包含它的行内属性),不包含它的内容元素.cloneNode(false);
  • 增加节点和移出节点
    ★注意 移除节点只是解除父子关系,内存中还是有这个对象的
增加节点和移除节点语法
增加节点父节点.appendChild(子节点) ;
移除节点父节点.removeChild(子节点);

  • 事件

  • 事件:触发响应机制
  • Event接口表示在DOM中发生的任何事件,一些是用户生成的(例如鼠标或键盘事件),而其他由API生成。
  • 事件三要素
  • 事件源:触发(被)事件的元素
  • 事件类型:事件的触发方式(例如鼠标点击或键盘点击)
  • 事件处理程序:事件触发后要执行的代码(函数形式)
  • 事件的基本使用
<div id ='box'></div>

var box = document.getElementById('box');
box.onclick = function(){
		console.log('代码会在box被点击后执行');
}

  • 属性操作
  • 非表单元素的属性:href、title、id、src、className
  • innerHTML、innerText
  • HTML转义符
符号转义符
‘’ (双引号)&quot ;
’ (单引号)&apos ;
<&lt ;
>&gt ;
空格&nbsp ;
@&copy ;
  • 表单元素的属性
表单元素属性
value用于大部分表单元素的内容获取(option除外)
type可以获取input标签的类型(输入框或复选框等)
disabled禁用属性
checked复选框选中属性
selected下拉菜单选中属性
  • 自定义属性操作
    ★获取的是任意的行内属性
自定义属性操作作用
元素.setAttribute(‘属性名’,属性值);设置标签行内属性
元素.getAttribute(‘属性名’);获取标签行内属性
元素.removeAttribute(‘属性名’);移出标签行内属性
  • 样式操作
  • 使用style方式设置的样式显示在标签内
    ★通过样式属性设置宽高、位置的属性类型是字符串,需要加上单位px。
var box = document.getElementById('box');
box.style.width = '100px';
box.style.height = '100px';
box.style.backgroundColor = 'red';
  • 类名操作
  • 修改类名不能直接使用class属性 因为class是关键字 要使用className属性修改
  • 修改标签的className属性相当于直接修改标签的类名
var box  = document.getElementById('box');
box.className = 'clearfix';

  • 事件对象
  • 存储与事件相关的数据的对象
  • 当用户触发事件的时候,浏览器会自动捕捉与事件相关的信息,将鼠标坐标点、键盘按键等存入一个对象中,这个对象就叫做事件对象。
//如何获取事件对象:给事件处理函数添加形参,一般设置为e/event。
var box = document.getElementById('box');
box.onclick = function(e){
		//事件对象e有兼容性问题
		e = e || windwow.event;
		console.log(e);
}
  • 事件对象的三大坐标系
var box = document.getElementById('box');
box.onclick = function(e){
		e = e || window.event;
		//电脑屏幕左上角距离触发事件的那一点的x值和y值
		console.log(e.screenX,e.screenY);
		//浏览器可视区距离触发事件那一点的x值和y值
		console.log(e.clientX,e.clientY);
		//页面左上角距离触发事件那一点的x值和y值
		//哪怕页面滚动了还是以页面左上角开始距离触发事件那一点
		console.log(e.pageX,e.pageY);
}
//pageX和pageY的兼容
//pageX/pageY坐标系相对于页面左上角,实际上就是界面滚动出去的距离+可视区域的距离
function getPagePoint(e){
		e = e || window.event;
		if(e.pageX){
				//谷歌火狐浏览器
				return {
						pageX : e.pageX;
						pageY : e.pageY;
				}
		}else {
				//IE8
				return {
				pageX :clientX + document.documentElement.scrollLeft;
				pageY : clientY + document.documentElement.scrollTop;
				}
		}
		
}
  • 注册/移除事件
  • 点语法注册事件
    ★如果注册多个同名事件,后者会覆盖前者
  • addEventListener注册事件
    ★可以注册多个同名事件,如果有同名事件不会覆盖,而是依次执行
    ★第一个参数type:事件类型字符串 不要加on 例如 click
    ★第二个参数tlistener:事件处理函数
    ★第三个参数布尔类型:默认是false事件冒泡,true事件捕获
    ★IE8以前的版本不支持
  • removeEventListener移除事件
    ★第一个参数type:事件类型字符串 不要加on
    ★第二个参数tlistener:事件处理函数
    ★第三个参数布尔类型:可以不传,默认是false(代表事件冒泡),true事件捕获
    ★addEventListener要用对应的移除事件移除
    ★如果要移出某个事件处理函数,前提是具名函数,匿名函数无法移除
    ★IE8以前的版本不支持
<input type = 'button' value = '点我' id = 'btn'' />

var btn = document.getElementById('btn');'
btn.addEventListener('click',function(){
		cosole.log('注册事件');'
},false);
btn.removeEventListener('click',function(){
		console.log('移除事件');
},false);
  • attachEvent注册事件
    ★只有IE8以前支持的方法,其他的浏览器都不支持
    ★第一个参数type:事件类型字符串 但是要加on
    ★第二个参数tlistener:事件处理函数
    ★后面设置的注册事件先执行,前面注册的事件后执行
  • detachEvent移除事件
    ★只有IE8以前支持的方法,其他的浏览器都不支持
    ★第一个参数type:事件类型字符串 但是要加on
    ★第二个参数tlistener:事件处理函数
    ★attachEvent要用对应的移除事件移除
<input type = 'button' value = '点我' id = 'btn'' />

var btn = document.getElementById('btn');'
btn.attachEvent('onclick',function(){
			console.log('IE8之前的注册事件');'
});
btn.detachEvent('onclick',function(){
		console.log('IE8之前的移除事件');
});
注册/移除事件的方法语法
点语法注册事件事件源.事件类型 = 事件处理函数
addEventListener注册事件元素.addEventListener(type,tlistener,布尔类型)
移除事件元素.removeEventListener(type,tlistener,布尔类型)
attachEvent注册事件元素.attachEvent(type,tlistener)
移除事件元素.detachEvent(type,tlistener)
  • 事件冒泡
  • 如果一个元素的事件被触发,那么它的所有父级元素的同名事件也会被依次触发
  • 元素→父元素→body→html→document→window
  • 事件冒泡一直存在 当给所有的父级元素都添加同名事件就会触发
<input type = 'button' value = '按钮' id = 'btn' />

document.getElementById('btn').onclick = function(){
		alert('按钮被点击了');'
} ;
document,body.onclick = function(){
		alert('body被点击了');
};
document.documentElement.onclick = function(){
		alert('html被点击了');
}
document,onclick = function(){
		alert('document被点击了');'
};
window.onclick = function(){
		alert('window被点击了');'
};
//如果一个元素的事件被触发,那么它的所有父级元素的同名事件也会依次被触发
  • 事件冒泡的好处
    ★如果想给父元素的多个子元素添加同个事件,我们只需给父元素添加事件即可,然后通过获取事件源(e.target)就可以得知是哪一个子元素触发了这个事件
//如果想给ul中的所有li添加点击事件,那么可以给父元素添加点击事件即可,然后通过e.target 就可以得知是哪个子元素触发了这个事件
ul.onclick = function(e){
		e = e || window.event;
		var target = e.target || e.srcElement;
		//target:事件源 触发本次事件的源头
		console.log(target);
}
  • 冒泡的影响
    ★如果子元素与父元素有同名事件,并且代码逻辑相反,会有影响
  • 阻止冒泡
e.stopPropagation();//IE8不支持
e.cancelBubble = true ;//IE8阻止冒泡的方法
  • 事件捕获
    ★跟冒泡相反,是从window开始一级一级往下触发同名事件
    ★捕获默认不存在,必须要用addEventListener注册事件,并给第三个参数传true才能看到捕获
addEventListener('click',function(){},true);
  • 事件的三个阶段
  • 事件捕获阶段
  • 目标阶段
  • 冒泡阶段
    ★当捕获与冒泡并存时,先看window是否是捕获,再一级一级到目标元素
  • 阻止事件的默认行为
e.preventDefault();
  • 事件对象的属性和方法
事件对象的属性和方法语法
获取事件类型e.type
事件对象获取当前事件的所属阶段e.eventPhase
获取用户按键e.charCode /e.which /e.keyCode
获取窗口位置clientX / clientY
获取页面位置pageX/pageY
获取触发事件的元素e.target /e.srcElement
取消默认行为e.preventDefault();
  • 阻止事件传播的方式
  • 标准方式 event.stopPropagation();

  • IE低版本 event.cancelBubble = true ;

  • 常用的鼠标与键盘事件
常用的鼠标与键盘事件语法
点击onclick
双击ondbclick
鼠标移入onmouseover
鼠标移出onmouseout
鼠标按下onmousedown
鼠标弹起onmouseup
鼠标移动onmousemove
键盘弹起onkeyup
键盘按下(不会过滤功能键,不区分大小写)onkeydown
键盘按下(会过滤功能键,区分大小写)onkeypress
获得焦点onfocus
失去焦点onblur
  • 拖拽事件
拖拽盒子含义
ondragstart拖拽开始
ondrag拖拽中 (鼠标移动就触发)
ondragend拖拽结束(鼠标松开就触发)
拖拽盒子至容器含义
ondragenter拖拽进入容器
ondragleave拖拽离开容器
ondragover配合ondrop使用(鼠标移动就会触发 要阻止默认行为)
ondrop拖拽结束 在容器范围内松手就触发
  • 阻止a标签默认跳转的两种常用方式
//方法一:设置href属性为伪链接,执行js代码
<a href = 'javascript:void(0)'></a>
//方法二:设置return false 阻止a标签默认跳转

  • 图片转临时url
URL.createObjectURL(图片);
  • 三大家族
三大家族作用
offset家族获取元素自身的真实宽高与位置
scroll家族获取元素内容真实宽高与位置
client家族获取元素可视区域大小

  • offset家族
    ★ offsetWidth、offsetHeight:获取的是元素自身的真实宽高(width+padding+border),获取的是不带单位的number类型。
offset家族作用
offsetWidth获取元素自身的真实宽度
offsetHeight获取元素自身的真实高度
offsetParent获取一个元素的定位父级
offsetLeft获取元素的左外边框到定位父级左内边框的距离
offsetTop获取元素的上外边框到定位父级上内边框的距离

offset家族

  • scroll家族
    ★同offset家族类似,获取的也是不带单位的number类型。
scroll家族作用
scrollWidth获取元素内容真实的宽度
scrollHeight获取元素内容真实的高度
scrollLeft获取元素内容左滚动出去的距离
scrollTop获取元素内容上滚动出去的距离
onscroll元素的滚动事件,只要滚动就会触发

scroll家族

//获取网页滚动出去的距离
//给window注册滚动条事件没有兼容性问题
window.onscroll = function(){
		console.log(document.documentElement.scrollTop);
		console.log(document.documentElement.scrollLeft);
}

★如果不考虑浏览器的兼容问题 可以直接使用上面的代码获取网页滚动出去的距离

//封装浏览器兼容函数---获取网页滚动出去的距离
function getPageScroll(){
		var x = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
		var y = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
		return {
				scrollLeft = x ;
				scrollTop = y;
		}
}
  • client家族
client家族作用
clientWidth获取可视区域的宽
clientHeight获取可视区域的高
clientTop上边框
clientLeft左边框

client家族

//获取网页可视区域的大小
//给window注册网页大小变化没有兼容性问题 监听浏览器窗口的变化
window.onsize = function(){
		console.log(document,documentElement.clientWidth);
		console.log(document.documentElement.clientHeight);
}

★如果不考虑浏览器的兼容问题 可以直接使用上面的代码获取网页可视区域的大小
一般用于响应式布局

//封装浏览器兼容函数---获取网页可视区域大小
function getClientSize(){
		var x = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0;
		var y = window.innerHeight || document.documentElement.clientHeight || document.body.clientHieght ||0;
		return {
				clientWidth = x;
				cilentHeight = y;
		}
}

  • BOM-----------浏览器对象模型

  • 定义了一套操作浏览器功能的API
  • 浏览器对象模型提供了对立于内容的、可以与浏览器窗口进行互动的对象结构
BOM对象主要由五大对象组成作用
window对象当前浏览器窗口
location对象包含当前页面的URL信息
history对象主要用于记录当前窗口的历史记录
navigator对象当前浏览器的信息
screen对象获取用户电脑屏幕的分辨率
  • window对象
  • 三大特点
  • 1.是浏览器的顶级对象(所有的全局变量、全局函数、dom对象都是window对象的属性)

  • 2.只要是window对象的属性和方法,在使用的时候都可以省略前面的window

  • 3.window对象有一个特殊的默认属性name(name的值一定是字符串类型)

  • 对话框
对话框作用
alert();弹出框
prompt();输入框
confirm();确认框
  • 两个常用方法
  • window.open(URL,target,feature,布尔类型);-----------打开一个窗口

  • 第一个参数是: 要打开的网址URL
    第二个参数是:要替换当前窗口(_self)还是打开一个新窗口(_blank)
    第三个参数是:新窗口的特征 大小、位置等(必须第二个参数设置(_blank)新窗口打开才有效)
    第四个参数是:布尔类型 true/false 把新开的窗口加入/不加入到浏览器历史内容
    返回值:是新打开的window对象

  • window.close();-----------关闭一个窗口

  • 参数就是你想要关闭的窗口对象,如果不写,默认就是关闭自己

  • 三个事件-----记录了浏览器窗口从打开到关闭的三个过程
window对象的三个事件含义
window.onload界面上所有的内容加载完毕之后才触发这个事件
window.onbeforeunload界面在关闭之前会触发这个事件
window.onunload界面在关闭的那一瞬间会触发这个事件
  • location对象
  • 三个方法
  • url:全球统一的资源定位符
  • url = 协议名(http) + ip地址(域名) + 端口号 + 资源路径
location对象三个方法语法
打开新网页 (可以回退)location.assign(‘新网页的url’) ;
替换当前网页(不能回退)location.replace(‘要替换的网页url’);
刷新当前网页location.reload()
  • location对象信息查看
location对象信息查看语法
资源定位符location.hash
主机location.host
主机名location.hostname
端口号location.port
完整的url路径location.href
资源路径location.pathname
url协议location.protocol
url请求的参数location.search
  • history对象
  • 两个方法
  • history对象主要用于记录当前窗口的历史记录
  • history对象主要作用是前进和后退网页
history对象两个方法语法
前进history.forward();
后退history.back();
  • navigator对象
navigator对象信息查看语法
当前浏览器版本信息navigator.appVersion
当前浏览器的系统平台类型navigator.platform
当前浏览器类型navigator.userAgent
  • screen对象(了解即可)
获取用户电脑屏幕的分辨率语法
屏幕宽度screen.width
屏幕高度screen.height

  • localStorage与sessionStorage
  • localStorage
  • 本地存储 将数据存储到浏览器
数据的处理语法
存数据localStorage.setItem(‘属性名’,‘属性值’) ;
取数据localStorage.getItem(‘属性名’) ;
删数据localStorage.removeItem(‘属性名’);
清空数据localStorage.clear();

★注意
★存储的数据只能是字符串类型,如果是其他数据类型则会自动调用toString()方法转为字符串
★永久存储,除非自己删除,否则一直存在于浏览器
★删数据是一个一个删除数据
★清空数据是一次性删除所有数据

  • sessionStorage
  • 相当于短命版的localStorage,其他用法完全一致
数据的处理语法
存数据sessionStorage.setItem(‘属性名’,‘属性值’) ;
取数据sessionStorage.getItem(‘属性名’) ;
删数据sessionStorage.removeItem(‘属性名’);
清空数据sessionStorage.clear();

  • localStorage与sessionStorage的区别
  • 相同点:作用一致,都是本地存储数据,存储的数据只能是字符串类型,如果是其他数据类型则会自动调用toString()方法转为字符串
  • 不同点:HP值不同
  • localStorage是永久存储,存储在硬盘中(HP值无限)
  • sessionStorage是一次性存储,存储在内存中(HP值一条命)

  • 经纬度(了解即可)
  • 获取经纬度:其实就是获取当前设备的地理位置
    ★注意 谷歌浏览器无法获取
navigator.geolocation.getCurrentPosition(function(location){
				console.log(location);//获取经纬度
				console.log(location.coords.longitude);//获取经度
				console.log(location.coords.latitude);//获取纬度
})


  • 定时器
  • 含义:某一件事(某一段代码)并不是马上执行,而是隔一段时间执行
  • setInterval(handler,timeout);
  • 第一个参数:要执行的一段代码(函数)
    第二个参数:时间间隔 单位毫秒
    返回值:这个定时器的id
var timeId = null;
//创建定时器
timeId = setInterval(function( ){
		console.log('这段代码每隔1s执行一次');
},1000)
clearInterval(timeId); //清除定时器
  • setTimeout(handler,timeout);
  • 第一个参数:要执行的一段代码(函数)
    第二个参数:时间间隔 单位毫秒
    返回值:这个定时器的id,setTimeout执行一次之后就会自动关闭,所以一般不用
setTimeout(function(){
	console.log('这段代码1s后执行一次,执行完毕之后定时器自动关闭');
},1000)
  • 永久性定时器与一次性定时器
永久性定时器与一次性定时器语法
创建永久定时器setInterval(function( ){ },时间间隔);
清除定时器clearInterval(定时器id);
创建一次性定时器setTimeout(function( ){ },时间间隔);
  • ★★总结★★
  • 定时器setTimeout与setInterval唯一的区别就是 setTimeout定时器只会执行一次
  • 如果你想让这段代码一段时间后只执行一次,则使用setTimeout
  • 如果你想让这段代码每隔一段时间执行一次(执行多次),使用setInterval

本文由本人一字一句敲出来哒 希望对初学者有帮助~~~~

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS REST API是Esri公司提供的一种基于HTTP/HTTPS协议的Web API,用于访问和管理ArcGIS Server和ArcGIS Online等GIS服务和资源。ArcGIS REST API支持多种编程语言和平台,例如Java、Python、JavaScript、.NET、iOS和Android等。以下是ArcGIS REST API的一些主要特点和功能: 1. 支持多种HTTP操作:ArcGIS REST API支持多种HTTP操作,例如GET、POST、PUT和DELETE等,可以用于从GIS服务中获取或修改数据。 2. 支持多种数据格式:ArcGIS REST API支持多种数据格式,包括JSON、XML、HTML和二进制等,可以根据需要选择合适的数据格式。 3. 支持多种GIS服务和资源:ArcGIS REST API支持多种GIS服务和资源,例如地图服务、要素服务、空间分析服务、地理编码服务、地理处理服务、Web地图和Web应用程序等。 4. 支持数据查询和过滤:ArcGIS REST API支持对GIS服务中的数据进行查询和过滤,可以根据要求返回符合条件的数据。 5. 支持安全认证和授权:ArcGIS REST API支持多种安全认证和授权方式,例如基本认证、令牌认证和OAuth2.0认证等,可以保证GIS服务和资源的安全性和可靠性。 6. 支持跨域访问:ArcGIS REST API支持跨域访问,可以在不同的域名和网站之间进行数据交互和共享。 7. 支持自定义扩展:ArcGIS REST API支持自定义扩展,可以根据需要扩展和定制GIS服务和资源的功能和特性。 总之,ArcGIS REST API是Esri公司提供的一种基于HTTP/HTTPS协议的Web API,用于访问和管理ArcGIS Server和ArcGIS Online等GIS服务和资源,具有多种特点和功能,可以满足不同用户的需求和要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值