JAVASCRIPT常用API总结 (二)

简介: JAVASCRIPT常用API总结

位置大小

// getBoundingClientRect返回一个对象,包含top,left,right,bottom,width,height
// width、height 元素自身宽高
// top 元素上外边界距窗口最上面的距离
// right 元素右外边界距窗口最上面的距离
// bottom 元素下外边界距窗口最上面的距离
// left 元素左外边界距窗口最上面的距离
// width 元素自身宽(包含border,padding)
// height 元素自身高(包含border,padding)
// 元素在页面上的偏移量
var rect = el.getBoundingClientRect()
return {
 top: rect.top + document.body.scrollTop,
 left: rect.left + document.body.scrollLeft
}
// 元素自身宽(包含border,padding)
el.offsetWidth
// 元素自身高(包含border,padding)
el.offsetHeight
// 元素的左外边框至包含元素的左内边框之间的像素距离
el.offsetLeft
// 元素的上外边框至包含元素的上内边框之间的像素距离
el.offsetTop
//通常认为 <html> 元素是在 Web 浏览器的视口中滚动的元素(IE6 之前版本运行在混杂模式下时是 <body> 元素)
//因此,带有垂直滚动条的页面总高度就是 document.documentElement.scrollHeight
// 在没有滚动条的情况下,元素内容的总高度
scrollHeight
// 在没有滚动条的情况下,元素内容的总宽度
scrollWidth
// 被隐藏在内容区域左侧的像素数。通过设置这个属性可以改变元素的滚动位置
scrollLeft
// 被隐藏在内容区域上方的像素数。通过设置这个属性可以改变元素的滚动位置
scrollTop

 

 

// 视口大小

// ie9+
var pageWidth = window.innerWidth,
   pageHeight = window.innerHeight;
if (typeof pageWidth != "number"){
// ie8
if (document.compatMode == "CSS1Compat"){
   pageWidth = document.documentElement.clientWidth;
   pageHeight = document.documentElement.clientHeight;
 } else {
   // ie6混杂模式
   pageWidth = document.body.clientWidth;
   pageHeight = document.body.clientHeight;
 }
}

 

事件

// 绑定事件

// ie9+
el.addEventListener(eventName, handler , Booleans); // Booleans默认false(事件在冒泡阶段执行),true(事件在捕获阶段执行)
// ie8
el.attachEvent('on' + eventName, function(){
 handler.call(el);
});

 

// 移除事件

// ie9+
el.removeEventListener(eventName, handler);
// ie8
el.detachEvent('on' + eventName, handler);

 

// 事件触发

if (document.createEvent) {
// ie9+
var event = document.createEvent('HTMLEvents');
 event.initEvent('change', true, false);
 el.dispatchEvent(event);
} else {
// ie8
 el.fireEvent('onchange');
}

 

 

// event对象

var event = window.event||event;

 

// 事件的目标节点

var target = event.target || event.srcElement;

 

// 事件代理

ul.addEventListener('click', function(event) {
if (event.target.tagName.toLowerCase() === 'li') {
   console.log(event.target.innerHTML)
 }
});

 

DOM加载完毕

function ready(fn) {
if (document.readyState != 'loading'){
   // ie9+
   document.addEventListener('DOMContentLoaded', fn);
 } else {
   // ie8
   document.attachEvent('onreadystatechange', function() {
     if (document.readyState != 'loading'){
       fn();
     }
   });
 }
}

 

绑定上下文

// ie8
fn.apply(context, arguments);
// ie9+
fn.bind(context);

 

去除空格

// ie8
string.replace(/^\s+|\s+$/g, '');
// ie9+
string.trim();

 

ajax

// GET
var request = new XMLHttpRequest();
request.open('GET', 'user.php?fname=Bill&lname=Gates', true); // false(同步)
request.send();
// ie8
request.onreadystatechange = function() {
if (this.readyState === 4) {
   if (this.status >= 200 && this.status < 400) {
     // Success!
     var data = JSON.parse(this.responseText);
   } else {
     // 错误
   }
 }
};
// ie9+
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
   // Success!
   var data = JSON.parse(request.responseText);
 } else {
   // 服务器返回出错
 }
};
request.onerror = function() {
// 连接错误
};
// POST
var request = new XMLHttpRequest();
request.open('POST', 'user.php', true); // false(同步)
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send(dataString);

 

JSON处理

JSON.parse(string);
JSON.String(Object)

 

节点遍历

function forEach( nodeList, callback ) {
    if(Array.prototype.forEach){
        // ie9+
       Array.prototype.forEach.call( nodeList, callback );
    }else {
   // ie8
   for (var i = 0; i < nodeList.length; i++){
        callback(nodeList[i], i);
   }
 }
} 
forEach(document.querySelectorAll(selector),function(el, i){
})

转载自:http://mp.weixin.qq.com/s/RqTnRZ9bpmJpxrGiv9KUsw


相关文章
|
23天前
|
JavaScript 前端开发 API
常用JavaScript 数组 API大全
常用JavaScript 数组 API大全
40 0
|
23天前
|
API
egg.js 24.2写第一个api接口
egg.js 24.2写第一个api接口
73 0
|
21天前
|
设计模式 JavaScript API
Vue.js的provide/inject API实现了依赖注入
【5月更文挑战第17天】Vue.js的provide/inject API实现了依赖注入,允许父组件向深层子组件传递依赖,降低耦合,提高代码可维护性和测试性。通过provide选项提供依赖,如`provide: {foo: &#39;foo&#39;, bar: this.bar}`,子组件通过inject选项接收,如`inject: [&#39;foo&#39;, &#39;bar&#39;]`。适用于跨组件共享数据、插件开发和高阶组件。然而,应谨慎使用以防止过度复杂化代码结构。
26 0
|
23天前
|
Web App开发 JavaScript NoSQL
深入浅出:构建基于Node.js的RESTful API
在当今快速发展的互联网时代,RESTful API已成为前后端分离架构中不可或缺的一部分。本文旨在为初学者和中级开发人员提供一个清晰、简洁的指南,详细介绍如何使用Node.js构建一个高效、可维护的RESTful API。通过结合实际案例,本文将从API设计理念出发,深入讲解如何利用Express框架及MongoDB数据库实现API的增删改查功能,同时探讨如何通过JWT进行安全认证,确保数据传输的安全性。此外,文章还将简要介绍如何使用Swagger生成API文档,使得API的测试和维护更加便捷。无论你是希望提升现有项目的API设计,还是想从零开始构建一个新项目,本文都将为你提供一条清晰的道路
|
3天前
|
JavaScript 前端开发 API
详解JS的URL()和URLSearchParams() API接口
详解JS的URL()和URLSearchParams() API接口
9 2
|
10天前
|
JSON JavaScript 中间件
利用Node.js和Express构建RESTful API服务
利用Node.js和Express构建RESTful API服务
19 0
|
14天前
|
前端开发 JavaScript 中间件
基于最新koa的Node.js后端API架构与MVC模式
基于最新koa的Node.js后端API架构与MVC模式
28 1
|
18天前
|
Web App开发 存储 开发框架
使用Node.js构建RESTful API
【5月更文挑战第20天】本文指导使用Node.js和Express构建RESTful API。首先确保安装了Node.js,然后初始化项目,安装Express框架。在`app.js`中创建API,定义GET路由`/api/users`返回用户列表。运行服务器并测试API,最后讨论如何扩展API和提升其功能。这是一个构建RESTful API的基础入门教程。
|
23天前
|
缓存 监控 JavaScript
Node.js中构建RESTful API的最佳实践
【4月更文挑战第30天】本文介绍了在Node.js中构建RESTful API的最佳实践:选择合适的框架(如Express、Koa)、设计清晰的API接口(遵循HTTP动词和资源路径)、实现认证授权(JWT、OAuth 2.0)、错误处理、限流缓存、编写文档和测试,以及监控性能优化。这些实践有助于创建健壮、可维护和易用的API。
|
23天前
|
JavaScript API 开发者
深入了解Node.js的文件系统:Node.js文件系统API的使用与探索
【4月更文挑战第30天】本文深入探讨了Node.js的文件系统API,介绍了如何引入`fs`模块进行文件操作。内容包括异步读取和写入文件、删除文件、创建目录以及使用文件流进行高效操作。此外,还提到了文件系统的监视功能,帮助开发者全面掌握在Node.js中处理文件和目录的方法。