Tag Archives: JavaScript
HTML5本地数据库功能测试
HTML5可以直接创建和访问本地的Sqlite数据,对于暂存一些业务数据应该是足够使用,可惜IE和Firefox都不支持,大大限制了实际使用场景。 下面是几个核心API的用法,并在Chrome浏览器下测试通过。 创建数据库和表 插入和查询数据
页面加载时间记录
在分析前端页面的加载时间,常用的工具就是浏览器自带的分析工具,如Chrome的开发者工具等,但这种方法只限于人工单次分析,无法大批量的采集数据。 传统的js脚本,必须在页面的各种事件进行埋点,与正常的业务功能可能会有较差,且取不到页面加载的过程信息。 Html5的Web Preformance API带来了全新的方法,包含的Navigation Timing API可以解决大部分的页面性能分析需求,对于IE浏览器需IE9及之后上版本才支持。 下图是页面加载周期中的各类事件触发顺序,可以选择自己感兴趣的时间点进行记录和分析。 下面是一个示例的使用方法,注意使用了定时器来获取数据,否则会取不到loadEventEnd的时间。 参考资料: Navigation Timing
查看Jquery绑定的事件处理函数
使用jquery中,经常采用下面的方式完成事件绑定: 如果是自己开发的程序,比较清楚绑定的是哪个函数,但如果是其他网站呢,我们在不知道源代码结果的情况下,如何快速找出事件的处理函数呢? 下面分享一个专门查看绑定事件的函数: 在上面的例子中,在Chrome的控制台中使用效果如下: 然后点击下图中红圈中的链接可以直接定位到源代码。 还有一个更简单的方法,就是使用Firefox中的Firebug,可以直接查看jquery绑定的处理函数,效果如下图。
检查xml文件有效性的两个小脚本
test_xml.js var x = new ActiveXObject(“MSXML2.DOMDocument”); var f = WScript.Arguments(0) if (!x.load(f)) WScript.Echo(f); test_xml.bat @echo offREM for /f %%i in (‘dir /b/s d:empweb*.xml’) do cscript //nologo d:test_xml.js %%ifor /r %1 %%i in (*.xml) do cscript //nologo d:test_xml.js %%i 注意事项: 1、bat文件里面for语句的循环变量,必须以%%打头,但是如果在命令行必须以%打头。 2、bat文件中使用%n引用命令行传递的参数。 3、for /f 和 for /r 都可以达到同样的目标,for /f 里面的命令必须用单引号括起来。
《使用Javascript动态创建表格,不同的方法,巨大的运行时间差异!》的继续讨论
此篇文章为《使用Javascript动态创建表格,不同的方法,巨大的运行时间差异!》的继续讨论,原文章地址为:http://abaper.blogbus.com/logs/8278500.html 目标:生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充。 方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTextNode方法填充。 方法三:拼接表格innerHTML属性的字符串,使用字符串 += 操作符链接字符串 方法四:拼接表格innerHTML属性的字符串,各个字符串追加数组里面,最后调用数组的join方法生成目标字符串。 —————————————————————————————————- 根据dofy网友的反馈,重新做了测试。 ff下没有反映是因为有脚本错误,insertRow,insertCell两个方法在ff中必须带参数,我已经修改了原来的测试代码。 对我本机有环境的几个浏览器进行了重新测试,结果如下: 浏览器 方法一 方法二 方法三 方法四 IE 7 31503 1749 6713 312 FF 3.0.10 1128 470 277 224 chrome 3.0.195.33 154 87 157 185 测试结果总结: 1、对方法一中使用标准DOM对表格操作方法的支持中,IE7的性能最差。 2、ff 3和chrome 3对字符串的“+”操作都做了优化,在chrome下面“+”操作的性能甚至比array.join()还好,这点是我没有想到的。和在Java中虚拟机对“+”操作的优化类似,我感觉以后以牺牲代码可读性进行优化的必要性变得越来越小。 3、chrome的性能确实很强,尤其是对方法二使用的createElement类方法的支持。
getElementsByTagName返回的是一个数组吗?
getElementsByTagName返回的是一个数组吗?用起来像是一个数组,用length属性表示元素个数,用数字下表访问集合内的元素,但请看看下面的这个例子 页面元素如下: <div>1</div> <div>2</div> <div>3</div> 执行js脚本: var divs = document.getElementsByTagName(‘DIV’); alert(divs.length); var div4 = document.createElement(‘DIV’); div4.innerHTML = ’4′; document.body.appendChild(div4); alert(divs.length); 第一个alert输出结果是3,如果getElementsByTagName返回的是一个数组,第二次alert输出也应该是3,但实际输出是4,说明getElementsByTagName返回的是一个活动的列表,会实时反映出DOM对象的更新情况。
Character URL Encoded Table
Character URL Encoded ; %3B ? %3F / %2F : %3A # %23 & %24 = %3D + %2B $ %26 , %2C <space> %20 or + % %25 < %3C > %3E ~ %7E % %25 参考文章:INTRODUCTION TO URL ENCODING
一个避免无意中鼠标滚轮滚动,而导致当前选择框改变的脚本
window.attachEvent("onload", function() { selects = document.getElementsByTagName(‘SELECT’); for (var i = 0; i < selects.length; i++ ) { selects[i].old_onchange = selects[i].onchange; selects[i].onchange = function() { this.old_onchange(); window.focus(); } }});
取HTML元素自定义属性IE和FF的一点差异
像这样的元素:<input id="c" type="text" format="0.##" /> 取出format属性,在IE下面可以使用:document.getElementById(‘cust_id’).format,但是在FF下面只能使用document.getElementById(‘cust_id’).getAttribute(‘format’),当然这个方法在IE下面也是可以使用的。
Use Javascript in Java 6
Here is a simple example from dev2dev website: import java.io.FileNotFoundException;import java.io.FileReader; import javax.script.Bindings;import javax.script.Compilable;import javax.script.CompiledScript;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException; public class SimpleScript { public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); // output value of vairable engine.put("name", "hello, adam"); engine.eval("println(name)"); // evaluate a statement [...]