#
编辑页面离开时弹出提示

正文N年前就知道,只是没记录过,所以今天写下来。主要是借助window.onbeforeunload来实现: JS写法: window.onbeforeunload = function(){ return '修改尚未保存,确定放弃吗?';};//或者这样写:window.onbeforeunload = function(event){ event.returnValue = '... 阅读全文

@2017-08-22 JavaScript 浏览(265)
#
Java、JS、PHP关于AES的加密解密互通问题

背景最近对接统一登录碰到PHP和Java的AES加密结果不一致问题,花了不少的时间,特此记录一下。 大致逻辑就是第三方平台对接统一登录平台时,拿到对方给的一些数据然后采用AES加密生成一个token给对方校验,第三方平台是Java写的,统一登录平台时php写的,而且php那边肯定是不能随意修改代码的,只能改Java这边。 首先,php那边的加密代码如下: /** * 加密 * @return... 阅读全文

@2017-03-18 JavaSE 浏览(907)
#
HTML5 fetch API

介绍fetch是传统XMLHttpRequest(也就是常说的ajax)的替代者,相比后者,它更简单,并且内置对Promise的支持。 但其实话说回来,我至今没太搞明白它的更多优点,因为说它使用简单好像体现不出优势,因为我们平时都是使用ajax框架的(比如jQuery),很少会直接使用原生XMLHttpRequest,而且用了它的话还要担心兼容性的问题。 语法语法很简单:fetch(url, ... 阅读全文

@2017-03-08 JavaScript 浏览(479)
#
Mock.js使用小结

介绍mockjs是一个模拟后台接口的JS库,它的原理是重写了XMLHttpRequest,它可以在接口没出来时非常方便的模拟数据,上线之后不引用它即可。 官网:http://mockjs.com/文档:https://github.com/nuysoft/Mock/wiki 基本语法Mock.mock(template)根据数据模板直接返回数据,以下代码可访问 http://mockjs.... 阅读全文

@2017-02-23 JavaScript 浏览(434)
#
JS弹出下载对话框以及实现常见文件类型的下载

写在前面JS要实现下载功能,一般都是这么几个过程:生成下载的URL,动态创建一个A标签,并将其href指向生成的URL,然后触发A标签的单击事件,这样就会弹出下载对话框,从而实现了一个下载的功能。 这里所说的下载,有时候也可以理解为保存。出于安全考虑,JS肯定无法直接调用FileAPI写文件到磁盘,但是却可以通过下载来变相实现保存功能。 几个备用知识点JS触发单击事件既然是用A标签模拟,那么肯... 阅读全文

@2017-02-16 JavaScript 浏览(862)
#
为何所有人都说JavaScript中不推荐使用eval

前言估计稍微接触过前端的人都知道eval不推荐使用,但是有没有想过到底是哪些原生不推荐使用呢? 缺点分析 可读性差;性能差;不易维护、不易调试、不易优化;安全问题,它会执行任意传给它的代码,在代码字符串未知或者是来自一个不信任的源时,绝对不要使用 eval,比如说稍不注意容易引起XSS攻击;作用域问题; 当然性能差是相对的,现代浏览器中其实eval的性能很多时候还是比较好的,比如eval一个... 阅读全文

@2016-11-30 JavaScript 浏览(529)
#
[精品] JavaScript常见原生DOM操作API总结

几种对象NodeNodeListHTMLCollection节点查找API节点创建APIcreateElementcreateTextNodecloneNodecreateDocumentFragment节点修改APIappendChildinsertBeforeremoveChildreplaceChild节点关系API父关系API子关系API兄弟关系型API元素属性型APIsetAttribu... 阅读全文

@2016-11-20 JavaScript 浏览(517)
#
JavaScript中的new和instanceof操作符

newJavascript中的new运算符是用来实例化一个类,从而在内存中分配一个实例对象。 在javascript中, 通过new可以产生原对象的一个实例对象,而这个实例对象继承了原对象的属性和方法。因此,new存在的意义在于它实现了javascript中的继承,而不仅仅是实例化了一个对象! 一个模拟new实现过程的代码如下(注意仅仅是模拟其实现过程,并不能替代new!): fun... 阅读全文

@2016-11-16 JavaScript 浏览(226)
#
JavaScript原生事件相关知识点总结

事件的三个阶段捕获阶段 -> 目标阶段 -> 冒泡阶段,IE低版本不支持捕获阶段。addEventListener的第三个参数useCapture就是表示是否在捕获阶段触发,默认false。 事件的绑定和解绑一般有3种写法。 属性方式此方式不推荐。如,直接在div上面写onclick: target.onclick = fn; // 绑定事件target.onclick = ... 阅读全文

@2016-11-12 JavaScript 浏览(376)
#
JS获取剪贴板图片之后的格式与压缩问题

前言某年某月的某一天,突然发现博客服务器上上传的图片都比较大,一些很小的截图都有几百kb,本来服务器带宽就慢,不优化一下说不过去。 问题细述特别说明:本文代码因为只是用于我自己后台写markdown上传图片,运行环境只考虑PC,所以没有考虑任何兼容性,推荐Chrome下使用。 以下面一张图片为例: 原始图片为85kb,jpg格式的,上传之后就变成png格式了,而且变成了560kb!实在是... 阅读全文

@2016-10-23 JavaScript 浏览(369)
#
JS自定义事件

原文发表于:20160423 兼容性较好的方法先看一个例子: var event = document.createEvent("CustomEvent");event.initCustomEvent("myevent", true, true, {a:1, b:2});document.addEventListener("myevent", function(e){ console.l... 阅读全文

@2016-10-20 JavaScript 浏览(425)
【经典面试题】JavaScript数组去重

题目已知有如下一个数组,要求实现一个去重方法: var arr = ['aa', 'bb', 'cc', '', 1, 0, '1', 1, 'bb', null, undefined, null]; 既然是面试题,肯定要考虑兼容性和效率。 几种实现第一种实现这是最容易想到的方法: function unique1(array){ var result = []; for(va... 阅读全文

@2016-09-28 JavaScript 浏览(419)
#
[精品] 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法

前言网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字典文件,无法根据实际需要满足需求。 综上,我精心整理并修改了网上几种常见的字典文件并简单封装了一下可以直接拿来用的工具库。 这篇文章差不多一个月前就写好了大部分了,但是就差拼音输入法这一块一直没... 阅读全文

@2016-09-27 JavaScript 浏览(3810)
JavaScript中call和apply的区别

区别二者的作用都是在指定this值和参数的情况下调用某个函数,它们 唯一区别 就是参数指定的形式不一样,call接收的是参数列表,apply接收的是数组。 语法: fun.call(thisArg[, arg1[, arg2[, ...]]]);fun.apply(thisArg[, argsArray]); 使用var obj ={ str: 'abc', foo: funct... 阅读全文

@2016-09-23 JavaScript 浏览(347)
#
JavaScript正则表达式详解【有待完善】

创建正则表达式JS的正则表达式类型叫RegExp,有2种创建方式: var reg1 = /a/g; // 双斜杠法,这种方法书写更方便var reg2 = new RegExp('a', 'g'); // 传统写法,这种方法更正统console.log(/a/g instanceof RegExp); // 输出true 这2种方式没有任何区别,但是,当正则表达式的内容是动态的时候,用Reg... 阅读全文

@2016-09-22 JavaScript 浏览(416)
【转载】addEventListener的第三个参数分析

原文:https://my.oschina.net/u/1454562/blog/205010觉得写得不错,就转载过来了。 如果要把HTML元素的事件与某个函数绑定起来,可以有下面三种方法,以最常见的“点击”事件为例。 方法一: 直接在对应的HTML元素标签上绑定函数 <button id='submit' onclick='onClickFn()'>Click Me!<... 阅读全文

@2016-09-21 JavaScript 浏览(308)
11行代码实现简单的图片懒加载以及背景图懒加载

前言网上绝大多是图片懒加载插件都是针对img的src的,但是很多时候图片是以背景图的形式存在的,因为这种方式可以很容易实现图片不变形但是又保证宽高度固定,所以只能自己写一个。 这里只是简单的实现,没有考虑横向滚动、div滚动等等情况,但相信已经满足大部分情况了。 代码直接上代码,标题说11行,真有点吹了,哈哈,其实是去掉了大括号之后还剩11行,一共有15行: /** * 图片懒加载插件,与绝... 阅读全文

@2016-09-08 JavaScript 浏览(542)
#
onkeydown和onkeypress的区别

原文写于:20150121 正文二者区别大着呢。 首先,从名字上就可以看出一些区别:keydown意指键盘被按下触发,keyup意指键盘松开被触发,keypress则是按键被按压,keydown和keyup容易区分,但是keydown和keypress啥区别呢? keydown和keypress的区别区别: 执行顺序不同:keydown < keypress < keyup... 阅读全文

@2016-09-02 JavaScript 浏览(44)
#
分享自己写的JS版日期格式化和解析工具类,绝对好用!

前言本来想模仿Java里面的SimpleDateFormat()对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了。 原文链接 PS:较新的浏览器有提供一个自带的日期格式化方法Intl.DateTimeFormat,但是超级难用,完全没必要去了解。 日期格式化使用说明formatDate(date, fmt),其中fmt支持的格式有: y(年)M(月)d(日)q(季度... 阅读全文

@2016-09-02 JavaScript 浏览(660)
JavaScript中实现最高效的数组乱序

本文内容参考自网络。 常规做法var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];array.sort(function(a, b){ return Math.random() > 0.5 ? -1 : 1;}); 此方法虽直观,但效率并不高,经某网友测试,打乱10000个元素的数组,大概花了35ms左右。 高效做法if (!Array.prototype.... 阅读全文

@2016-08-22 JavaScript 浏览(426)
第1页,共2页