webAapi
2021-01-25 15:12
标签:get rtb 组成 getc on() ram === 总结 null 学习目标: API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM) 此处的Web API特指浏览器提供的API(一组方法),Web API在后面的课程中有其它含义 MDN-Web API 定义了JavaScript 的语法规范 JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关 一套操作浏览器功能的API 通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等 一套操作页面元素的API DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标记语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。文档可以进一步被处理,处理的结果可以加入到当前的页面。DOM是一种基于树的API文档,它要求在处理过程中整个文档都表示在存储器中。 DOM又称为文档树模型 例如:我们想要操作页面上的某部分(显示/隐藏,动画),需要先获取到该部分对应的元素,才进行后续操作 注意:由于id名具有唯一性,部分浏览器支持直接使用id名访问元素,但不是标准方式,不推荐使用。 事件:触发-响应机制 href、title、id、src、className 案例: ? 点击按钮显示隐藏div ? 美女相册 我会生成为标签 我不会生成为标签 innerHTML和innerText的区别 innerText的兼容性处理 注意 通过样式属性设置宽高、位置的属性类型是字符串,需要加上px 标签也可以生成 新标签 案例: ? 权限选择 重点讲父子属性,兄弟属性画图讲解 注意 childNodes和children的区别,childNodes获取的是子节点,children获取的是子元素 nextSibling和previousSibling获取的是节点,获取元素对应的属性是nextElementSibling和previousElementSibling获取的是元素 ? nextElementSibling和previousElementSibling有兼容性问题,IE9以后才支持 总结 捕获阶段 当前目标阶段 冒泡阶段 事件对象.eventPhase属性可以查看事件触发时所处的阶段 BOM(Browser Object Model) 是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。 我们在浏览器中的一些操作都可以使用BOM的方式进行编程处理, 比如:刷新浏览器、后退、前进、在浏览器中输入URL等 window是浏览器的顶级对象,当调用window下的属性和方法时,可以省略window 在指定的毫秒数到达之后执行指定的函数,只执行一次 定时调用的函数,可以按照给定的时间(单位毫秒)周期调用函数 location对象是window对象下的一个属性,时候的时候可以省略window对象 location可以获取或者设置浏览器地址栏的URL 统一资源定位符 (Uniform Resource Locator, URL) 使用chrome的控制台查看 查MDN MDN 成员 解析URL中的query,并返回对象的形式 通过userAgent可以判断用户浏览器的类型 通过platform可以判断浏览器所在的系统平台类型. webAapi 标签:get rtb 组成 getc on() ram === 总结 null 原文地址:https://www.cnblogs.com/qiangayz/p/12014105.html
typora-copy-images-to: media
---Web API
Web API介绍
API的概念
Web API的概念
掌握常见浏览器提供的API的调用方式
JavaScript的组成
ECMAScript - JavaScript的核心
BOM - 浏览器对象模型
DOM - 文档对象模型
DOM
DOM的概念
DOM经常进行的操作
获取页面元素
为什么要获取页面元素
根据id获取元素
var div = document.getElementById('main');
console.log(div);
// 获取到的数据类型 HTMLDivElement,对象都是有类型的
根据标签名获取元素
var divs = document.getElementsByTagName('div');
for (var i = 0; i
根据name获取元素*
var inputs = document.getElementsByName('hobby');
for (var i = 0; i
根据类名获取元素*
var mains = document.getElementsByClassName('main');
for (var i = 0; i
根据选择器获取元素*
var text = document.querySelector('#text');
console.log(text);
var boxes = document.querySelectorAll('.box');
for (var i = 0; i
掌握
getElementById()
getElementsByTagName()
了解
getElementsByName()
getElementsByClassName()
querySelector()
querySelectorAll()
事件
事件三要素
事件的基本使用
var box = document.getElementById('box');
box.onclick = function() {
console.log('代码会在box被点击后执行');
};
案例
属性操作
非表单元素的属性
var link = document.getElementById('link');
console.log(link.href);
console.log(link.title);
var pic = document.getElementById('pic');
console.log(pic.src);
var box = document.getElementById('box');
box.innerHTML = '我是文本
" "
' '
& &
> // greater than 大于
空格
? ©
表单元素属性
案例
自定义属性操作
样式操作
var box = document.getElementById('box');
box.style.width = '100px';
box.style.height = '100px';
box.style.backgroundColor = 'red';
类名操作
var box = document.getElementById('box');
box.className = 'show';
案例
创建元素的三种方式
document.write()
document.write('新设置的内容
innerHTML
var box = document.getElementById('box');
box.innerHTML = '新内容
document.createElement()
var div = document.createElement('div');
document.body.appendChild(div);
性能问题
案例
节点操作
var body = document.body;
var div = document.createElement('div');
body.appendChild(div);
var firstEle = body.children[0];
body.insertBefore(div, firstEle);
body.removeChild(firstEle);
var text = document.createElement('p');
body.replaceChild(text, div);
节点属性
模拟文档树结构
function Element(option) {
this.id = option.id || '';
this.nodeName = option.nodeName || '';
this.nodeValue = option.nodeValue || '';
this.nodeType = 1;
this.children = option.children || [];
}
var doc = new Element({
nodeName: 'html'
});
var head = new Element({
nodeName: 'head'
});
var body = new Element({
nodeName: 'body'
})
doc.children.push(head);
doc.children.push(body);
var div = new Element({
nodeName: 'div',
nodeValue: 'haha',
});
var p = new Element({
nodeName: 'p',
nodeValue: '段落'
})
body.children.push(div);
body.children.push(p);
function getChildren(ele) {
for(var i = 0; i
节点层级
var box = document.getElementById('box');
console.log(box.parentNode);
console.log(box.childNodes);
console.log(box.children);
console.log(box.nextSibling);
console.log(box.previousSibling);
console.log(box.firstChild);
console.log(box.lastChild);
节点操作,方法
appendChild()
insertBefore()
removeChild()
replaceChild()
节点层次,属性
parentNode
childNodes
children
nextSibling/previousSibling
firstChild/lastChild
事件详解
注册/移除事件的三种方式
var box = document.getElementById('box');
box.onclick = function () {
console.log('点击后执行');
};
box.onclick = null;
box.addEventListener('click', eventCode, false);
box.removeEventListener('click', eventCode, false);
box.attachEvent('onclick', eventCode);
box.detachEvent('onclick', eventCode);
function eventCode() {
console.log('点击后执行');
}
兼容代码
function addEventListener(element, type, fn) {
if (element.addEventListener) {
element.addEventListener(type, fn, false);
} else if (element.attachEvent){
element.attachEvent('on' + type,fn);
} else {
element['on'+type] = fn;
}
}
function removeEventListener(element, type, fn) {
if (element.removeEventListener) {
element.removeEventListener(type, fn, false);
} else if (element.detachEvent) {
element.detachEvent('on' + type, fn);
} else {
element['on'+type] = null;
}
}
事件的三个阶段
事件对象的属性和方法
案例
阻止事件传播的方式
常用的鼠标和键盘事件
BOM
BOM的概念
BOM的顶级对象window
注意:window下一个特殊的属性 window.name对话框
页面加载事件
window.onload = function () {
// 当页面加载完成执行
// 当页面完全加载所有内容(包括图像、脚本文件、CSS 文件等)执行
}
window.onunload = function () {
// 当用户退出页面时执行
}
定时器
setTimeout()和clearTimeout()
// 创建一个定时器,1000毫秒后执行,返回定时器的标示
var timerId = setTimeout(function () {
console.log('Hello World');
}, 1000);
// 取消定时器的执行
clearTimeout(timerId);
setInterval()和clearInterval()
// 创建一个定时器,每隔1秒调用一次
var timerId = setInterval(function () {
var date = new Date();
console.log(date.toLocaleTimeString());
}, 1000);
// 取消定时器的执行
clearInterval(timerId);
location对象
URL
scheme://host:port/path?query#fragment
scheme:通信协议
常用的http,ftp,maito等
host:主机
服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。
port:端口号
整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
path:路径
由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
query:查询
可选,用于给动态网页传递参数,可有多个参数,用'&'符号隔开,每个参数的名和值用'='符号隔开。例如:name=zs
fragment:信息片断
字符串,锚点.
location有哪些成员?
案例
function getQuery(queryStr) {
var query = {};
if (queryStr.indexOf('?') > -1) {
var index = queryStr.indexOf('?');
queryStr = queryStr.substr(index + 1);
var array = queryStr.split('&');
for (var i = 0; i
history对象
navigator对象
特效
偏移量
var box = document.getElementById('box');
console.log(box.offsetParent);
console.log(box.offsetLeft);
console.log(box.offsetTop);
console.log(box.offsetWidth);
console.log(box.offsetHeight);
客户区大小
var box = document.getElementById('box');
console.log(box.clientLeft);
console.log(box.clientTop);
console.log(box.clientWidth);
console.log(box.clientHeight);
滚动偏移
var box = document.getElementById('box');
console.log(box.scrollLeft)
console.log(box.scrollTop)
console.log(box.scrollWidth)
console.log(box.scrollHeight)
案例
附录
元素的类型