
javascript
蚁方阵
千里之行,始于足下,用代码编织技术人生
展开
-
document.write什么时候会清除文档内容?
在调用document.write时,会将内容写入文档流,所以会自动调用document.open方法打开文档流,如果文档流已经关闭,则会清除所有内容。那什么时候代表文档流已经关闭呢?即所有的内容都已经读入到浏览器中(含所有的内联CSS、HTML标签),即页面的主线程没有执行完成,也就是我们所看到的源代码里面的所有内容。以如下的代码为例:<body> <h1>Hello, World!</h原创 2017-06-30 21:38:43 · 2468 阅读 · 0 评论 -
关于javascript:void(0)运算符的的一点探讨
在前端页面的开发,为了将链接充当按钮使用,我们一般会采用如下的写法:<a href="javascript:void(0)" class="btn btn-default">链接测试</a>在绝大多数人看来,上述的写法中,void都像是一个函数,其实void是一个一元运算符,无论后面跟什么值,它都恒定返回undefined,所以void(0)的正确读法如下:// 将0用括号包起来void (0)原创 2017-11-27 19:52:18 · 572 阅读 · 0 评论 -
momentjs如何格式化时间差值
在实际应用中,我们经常需要计算两个时间的差值,用来确定消逝的时间,如下:var m1 = moment('2017-12-18 10:00:20'), m2 = moment('2017-12-18 10:10:00'), du = moment.duration(m2 - m1, 'ms');// 输出结果为“10 分钟”console.log(du.locale('zh-c原创 2017-12-12 21:35:50 · 33447 阅读 · 1 评论 -
用正则表达式提取Cookie值
Cookie是以“;”进行分隔的键值对字符串,因此如果要提取所以的键值,我们需要对字符串进行“;”与“=”的split(分割)操作,如下:function initCookie() { var cookie = document.cookie, // 第一次分割 items = cookie.split(";"), keys = {};原创 2017-11-07 19:13:27 · 9064 阅读 · 2 评论 -
axios.js提交表单数据的解决办法
axios因为小巧而性能强大受到很多人的追捧,但是其默认的数据提交方式为Payload,这样给后台解析带来了较大的困扰,因为难以从Request中获取到参数,所以默认的数据对象拼装无法成功 ,尤其是采用Spring MVC的@ModalAttribute注解时(没有使用@RequestBody注解)。解决方法如下: 1. 修改头部信息,将Content-Type由“application/x-ww原创 2017-07-19 21:09:44 · 10331 阅读 · 0 评论 -
JS constructor探讨(二):再谈构造函数prototype.constructor的用途
在上篇文章《 JS constructor探讨(一):为什么要设置prototype.constructor?》中,我们发现prototype.constructor仅仅可以用于识别对象是由哪个构造函数初始化的,但在实践中,我们还有可能用到这个功能,并且还非常有用,比如Angular的控制器注册过程中,如果要为所有的Controller添加实例方法,并且要保持良好的封装性,还是比较困难的,如下: a原创 2017-08-28 19:48:45 · 1634 阅读 · 0 评论 -
巧用隐藏层计算字符宽度
在Canvas与SVG的使用中,我们经常需要根据字符串的长度来计算文字绘制的起点与终点,常规的方法莫过于使用经验值,如中文字符长度乘以6(经验值),英文字符长度乘以3,代码示例如下:// 判断是否是ASCII字符var pattern = /[\u0000-\u00FF]*/, // 根据字符的个数来计算字符串的长度 width = pattern.test(text) ? t原创 2017-07-27 10:28:18 · 831 阅读 · 0 评论 -
Window 与 Object的奇妙联系
有这样一道Javascript面试题,问输出结果是什么及原因,如下:Object.prototype.username = 'yiifaa';alert(username);大部分的人都可能是认为是undefined,因为没有在作用域中声明username变量,但结果其实是yiifaa,原因是username是附加在window作用域上的,而window又是一个Object的一个实例,所以,上面的原创 2017-08-16 19:30:41 · 1351 阅读 · 0 评论 -
JS正则表达式exec()与String.prototype.match()的差异
在Javascript中,使用正则表达式有两种方法,一是通过String调用正则表达式,二是通过正则表达式拆分字符串,在大部分的情况下,它们的表现类似,都可以轻松实现测试字符串的功能,如下:var text = '[DTools] [logs] [Program Files]', // 正则表达式,注意g的使用 pattern原创 2017-07-31 22:09:05 · 951 阅读 · 0 评论 -
伪造链接地址的二种方法
在浏览器的涉及中,为了防止链接地址被伪造,浏览器一般会在状态栏显示地址信息,但可惜的是,显示的地址信息是静态的,也就是说,浏览器难以发现地址的动态变化,截图如下:针对浏览器的这种特性,我们可以很容易伪造出与浏览器状态栏地址信息不同的链接,示例代码如下:<a href="http://www.sina.com.cn" id="sina">新浪</a>方法一:利用mouseup事件通过组合使用mouse原创 2017-06-25 11:11:00 · 8835 阅读 · 0 评论 -
Javascript试探(一):无法覆盖的native code
在JS中,Object、String、Number等内置类型并不属于语法关键字,既然这样,那它们可以被覆盖吗?以一段企图统计JS对象数量的代码为例,如下:var count = 0;// 没有语法错误function Object() { count ++;}应该说,这段代码对于统计Vue、React这样的组件对象应该是适用的,毕竟程序的入口掌握自己手里,但是对于Object、Str原创 2017-06-24 21:59:16 · 5084 阅读 · 1 评论 -
Javascript:巧用n进制做加密与解密
对于安全型较低的应用,不妨试试Javascript的n进制转换,能达到简单的对称加密效果。1. 加密对于数字,转换为Number进行toString操作即可,toString接受一个进制转换的参数,取值范围为1~36,如下:var x = 640520;// 将x转换为32进制var secret = Number(x).toString(32);得到的结果是“jhg8”,是不是有...原创 2018-11-20 14:52:48 · 2052 阅读 · 1 评论