javascript常用知识汇总
javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会。从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记。
1.禁止手机虚拟键盘弹出
在开发适配手机的页面时,出现了这么一个现象,我用了input标签,点击弹出一个选择框,就是那种picker组件,在手机上点击就会出现虚拟键盘,这个必须去掉。第一种是为input加入readonly属性,第二种用js代码的document.activeElement.blur()
1 |
$("#datePicker").focus(function(){
|
参考文章:
1.小技巧|H5禁止手机虚拟键盘弹出:https://segmentfault.com/a/1190000011371022
2.HTML5页面,点击input禁止弹出手机默认键盘的几种解决办法:https://zhubangbang.com/html5-disable-the-phone-default-keyboard.html
3.input禁止输入的方法:https://blog.csdn.net/diwuyanting/article/details/78589766
2.瀑布流布局的实现
如果要实现瀑布流布局的话,可以使用masonry这个插件,如果想深入理解原理的话,还是需要查看张鑫的空间文章的。
参考文章:
1.折腾:瀑布流布局(基于多栏列表流体布局实现):https://www.zhangxinxu.com/wordpress/2012/03/%E5%A4%9A%E6%A0%8F%E5%88%97%E8%A1%A8%E5%8E%9F%E7%90%86%E4%B8%8B%E5%AE%9E%E7%8E%B0%E7%9A%84%E7%80%91%E5%B8%83%E6%B5%81%E5%B8%83%E5%B1%80-waterfall-layout/
2.瀑布流的三种实现:https://www.jianshu.com/p/a7c6b9f28578
3.Masonry:https://masonry.desandro.com/#getting-started
3.获取页面高度
网页可见区域宽:document.body.clientWidth;
网页可见区域高:document.body.clientHeight;
网页可见区域宽:document.body.offsetWidth(包括边线和滚动条的宽);
网页可见区域高:document.body.offsetHeight(包括边线的宽);
网页正文全文宽:document.body.scrollWidth;
网页正文全文高:document.body.scrollHeight;
网页被卷去的高(ff):document.body.scrollTop;
网页被卷去的高(ie):document.documentElement.scrollTop;
网页被卷去的左:document.body.scrollLeft;
网页正文部分上:window.screenTop;
网页正文部分左:window.screenLeft;
屏幕分辨率的高:window.screen.height;
屏幕分辨率的宽:window.screen.width;
屏幕可用工作区高度:window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;
你的屏幕设置是:window.screen.colorDepth 位彩色;
你的屏幕设置 :window.screen.deviceXDPI 像素/英寸;
参考文章:
1.关于获取各种浏览器可见窗口大小的一点点研究:https://www.cnblogs.com/Henllyee/archive/2008/04/20/1162517.html
2.用Javascript获取页面元素的位置:http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html
4.防止全局变量污染
在普通的js文件中定义一个变量,在sb.js中定义了一个变量sb,如果直接通过script标签引入这个sb.js文件,则sb这个变量会直接成为window的一个变量,即全局变量。
1 |
var sb="kkk"; |
过多的全局变量不仅仅会拖慢程序运行,而且不利于多人合作式的开发模式,不同的人分别在自己的文件中定义全局变量,容易造成全局变量冲突,互相覆盖,这个时候就应该通过使用“定义全局变量命名空间”和“利用匿名函数将脚本包裹起来”两种方法避免全局变量的污染。
1.定义全局变量空间,就是新建一个全局对象,然后将所有的属性和函数都作为这个对象的键值对存储在这个变量中:
1 |
2.利用匿名函数将脚本包裹起来,就是将js文件用一个立即执行的函数包裹起来,jquery也可以使用$(document).ready()函数。
1 |
// 匿名函数 |
参考文章:
1.防止js全局变量污染方法总结-待续:https://blog.csdn.net/xllily_11/article/details/52816699
5.js库开头加分号和叹号
有时候,在查看别人写的库的时候,会发现一个奇怪的现象,在文件的开头是分号和叹号开头(牛逼的人写代码,都是小白理解不了的),这里以layui库为例:
加分号的作用主要是为了在与其他文件合并压缩的时候,防止文件之前没有;分隔而导致错误。而加叹号的作用主要是为了构建一个立即执行函数,“而将运算符加载函数定义的前面,则是将函数看做一个整体,然后再调用这个函数,并对返回的结构进行逻辑运算。”,“解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || 都有这样的功能。”,类似于(function(){})(),只不过写法上更加的简洁。
参考文章:
1.js库前加一个感叹号(!)是什么意思??:https://blog.51cto.com/6965535/1876217
2.为什么有的jQuery插件以”;”分号开头:https://segmentfault.com/q/1010000000142134
3.js文件中函数前加分号和感叹号是什么意思?有什么用:http://www.siyuweb.com/javascript/1194.html
4.js函数前加分号和感叹号是什么意思?有什么用?:https://blog.csdn.net/hellochenlu/article/details/52593472
javascript常用知识汇总的更多相关文章
- javascript常用知识点集
javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...
- AngularJS进阶(十二)AngularJS常用知识汇总(不断更新中....)
AngularJS常用知识汇总(不断更新中....) 注:请点击此处进行充电! app.controller('editCtrl',['$http','$location','$rootScope', ...
- javaScript 基础知识汇总(三)
1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while 循环 let i =0; do { //循环体 }while( ...
- JavaScript基础知识汇总
1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...
- javaScript 基础知识汇总(六)
1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number boolean symbol null undefined 对 ...
- javaScript 基础知识汇总(五)
1.垃圾回收 JavaScript 的内存管理是自动的,不能强制执行或者阻止执行 可达性 JavaScript中主要的内存管理概念是可达性. 什么是可达性? 定义一个对象 let user = { n ...
- javaScript 基础知识汇总(二)
1.运算符 术语或者叫法:一元运算符.二元运算符.运算元(参数) let x=0; x=5+2; //5和2为运算元,“+” 为二元运算符: x=-x; //"-" 为一元运算符 ...
- javascript 基础知识汇总(一)
1.<script> 标签 1) 可以通过<script> 标签将javaScript 代码添加到页面中 (type 和language 属性不是必须的) 2)外部的脚本可以通 ...
- javaScript 基础知识汇总 (十三)
1.Class 在JavaScript中 calss即类是一种函数 基本语法 class Myclass{ constructor(){} method1(){} method2(){} method ...
随机推荐
- python刷LeetCode:5. 最长回文子串
难度等级:中等 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab& ...
- Log4Net 使用及组合公共类
好记性不如烂笔头,这次是由衷的感受到了! log4net 是一个很好用的日志记录工具,引用入项目中,如何查看项目内部运行情况,如何快速定位异常信息,好的日志记录能帮很大的忙: log4net 很好用, ...
- CMake工具总述
CMake是一个跨平台的安装工具,可以用简单的语句来描述所有平台的安装. CMake的文件为.cmake文件与CMakeLists.txt文件;通过编写上述两种文件就可以完成源程序的安装.
- 下载安装MySQL(MacOS)
在安装MySQL服务器之前,首先要做的事情就是去MySql的官网下载适合自己系统的MySQL版本 https://www.mysql.com/ 点击上方的DOWNLOAD 拉到屏幕最底部选择MySQL ...
- Println(Object)小贴士
println public void println(Object x) 打印 Object,然后终止该行.此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同 ...
- ASP.NET ZERO 学习 导航菜单
定义PageNames和PermissionName PageNames : Web/App_Start/Navigation/PageNames.cs public const string Das ...
- UML-为什么要使用层?
1.内聚职责:使关系分离.减少耦合和依赖,提高潜在复用性. 2.领域层和技术服务层可以是分布式的 3.利于团队开发
- switch-case的用法
case 值1: 表达式的值和 值1匹配上了,需要执行的代码; break; case 值2: 表达式的值和 值2匹配上了,需要执行的代码; break; case 值3: 表达式的值和 值3匹配上了 ...
- Python 进行 OCR识别 -- pytesseract库
pip install pytesseract 报错:tesseract is not installed or it's not in your path 下载安装 Tesseract-OCR ht ...
- jdk8下载地址
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SE Binaries ...