Shell 基础 —— 变量和配置文件
一直以为Unix时间戳和JavaScript中的Date.now()的结果一致,但是最近才发现,Date.now()是精确到毫秒级的,去掉末尾的3位就可以和时间戳完美匹配。 用户自定义变量变量定义1name=value 注意等号的前后不能有空格,如果value是字符串且有空格必须使用引号.例如以下的定义都是非法的! 1234x= 1x =1x = 1x=hello world 因为如果有空格的话,前面的单词会被解析为系统命令,而后面的参数会被解析为选项. 使用变量只需要在变量前面加上$即可,例如: 12a=1echo $a # 1 *注意:*双引号和单引号的区别:单引号中的变量相当于ES6中的模板字符串,而单引号中的内容完全就是字符串,丧失了原有的变量替换.*注意:*shell中的变量默认都是字符串,例如: 1234x=1y=2z=$x+$y # 1+2echo $z 变量叠加相当于拼接字符串,例如: 123456x=123x="$x"456echo $x # 123456# 我们也可以使用下面的方式x=${x}789echo...
javascript中的新api
梦想还是要有的,万一见鬼了呢。 requestAnimationFrame早期动画循环在js中创建动画最简单的方式是使用setInterval(),如下所示: 12345678(function(){ function updateAnimations(){ doAnimation1() doAnimation2() // other animations } setInterval(updateAnimations,delta)})() 编写这种动画的关键是知道delta多长合适.一方面delta越短,动画越平滑;另一方面考虑到性能的问题,delta要足够长.多数显示器的刷新频率是60Hz,因此最平滑的delta = 1000 / 60 =...
javascript 高级技巧
高级函数安全类型的检测例如: 12345let isArray = value => Object.prototype.toString.call(value) === '[object Array]'let isFunction = value => Object.prototype.toString.call(value) === '[object Function]'let isRegExp = value => Object.prototype.toString.call(value) === '[object RegExp]'// let isNativeJSON = value => window.JSON && Object.prototype.toString.call(value) === '[object JSON]'// 上面的方法有疑问?什么是原生JSON? 作用域安全的构造函数例如以下的构造函数: 123function...
其他跨域解决方案
图像Ping这种技术的原理就是利用<img>标签.一个网页可以从任何站点加载图片而无需担心跨域问题,这也是在线广告跟踪浏览量的主要方式.我们也可以动态创建图像,使用它们的onload和onerror事件处理程序来确定是否收到了响应. 动态创建图像经常用于图像Ping.图像Ping是与服务器进行简单的,单向的跨域的一种方式.请求的数据是通过查询字符串的形式发送的,而响应可以是任何内容,但通常是像素图或者204响应.通过图像Ping,浏览器得不到任何具体的数据,但通过侦听load和error事件能知道响应什么时候接收到.例如: 12345var img = new Image()img.onload = img.onerror = function(){ console.log('done')}img.src =...
html5 canvas的基本操作
导出在canvas元素上绘制的图像12345678910var drawing = document.getElementById('drawing')// 是否支持canvasif(drawing.getContext){ // 取得图像数据URI var imgURI = drawing.toDataURL('image/png') // 显示图像 var image = document.createElement('img') img.src = imgURI document.body.appendChild(image)} 文本的度量由于绘制文本比较复杂,特别是需要把文本控制在某一区域内部的时候,canvas提供了measureText(),该方法接收一个参数,即:需要绘制的文本,返回一个TextMetrics对象,该对象有一个width属性.假设我们想要在140像素宽的矩形区域中绘制文本”hello...
表单的常见操作
如何防止重复提交表单在金融消费等敏感领域,重复提交表单将会导致费用翻倍.最常见的解决方案就是在提交一次之后禁用提交按钮(当然后端接口也要进行严密判断)。 1234567form.addEventListener('submit',function(ev){ var target = ev.target // 取得提交按钮 var submitBtn = target.elements['submitBtn'] // 通过name属性 // disable it submitBtn.disabled =...
DOM 与事件
javascript和html之间的交互是通事件实现的.事件就是文档或者浏览器窗口中发生的一些特定的瞬间.我们可以使用侦听器来预定事件,以便事件发生时执行相应的代码.传统的软件工程中称为观察者模式,使得行为(js)和外观(html和css)松散耦合. DOM事件流“DOM2级事件”规定事件流包括3个阶段: 事件捕获(为截获事件提供了机会) 处于目标(实际的目标接收到事件) 事件冒泡(可对事件做出响应) 以下面的DOM结构为例: 单击div元素的时候会按照上述顺序触发事件. 事件处理程序1<button onclick="show();"> 思考:上述的时间处理程序有什么缺点?答:缺点有2个.①可能存在时差问题.考虑这样一种情形.show函数定义在按钮的后面,当DOM还没有加载到script标签的时候将会发生错误,此种情形可以通过内部添加try-catch来解决:<button...
javascript中的元素大小
偏移量offset dimension包括元素在屏幕上占用的所见空间的大小.元素的可见大小由宽高,内边距,滚动条和边框确定,注意:不包含外边距. 如图所示: offsetLeft和offsetTop属性与包含元素有关,包含元素的引用保存在offsetParent属性中。offsetParent属性不一定与parentNode的值相等。例如,<td>元素的offsetParent是作为其祖先元素的<table>元素,因为<table>是在DOM层次中距<td>最近的一个具有大小的元素。 要想取得某个元素在页面上的偏移量,就可以将这个元素的offsetLeft和offsetParent.offsetLeft相加,如此循环直到根元素就可以得到一个基本准确的值: 123456789function getElementLeft(element) { var actualLeft = element.offsetLeft; var current = element.offsetParent; while (current...