Tag Archives: JavaScript

检查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 [...]

解决Ajax跨域的取巧办法

在IE里面,有一个比较取巧的办法,就是把当前域和目标域都放到受信任站点就可以了,下面是一些更加全面和彻底的解决方法: 1、Server Proxy 2、Dynamic Script标签 3、Apahce的mod_rewrite模块 4、借助IFrame模拟 5、借助于Flash JavaEye上的一个相关讨论:求XmlHttp 跨域的解决方案 另外一个BLOG是使用Flash达到跨域访问数据的目的:Ajax跨域访问的替代方案

使用Javascript操作剪贴板和Excel

操作剪切板使用了window.clipboardData对象 操作Excel使用了ActiveX对象,创建时候有一个警告信息,点击“是”就可以了 <html> <head> <title>test page</title> <script type="text/javascript"> <!– function exportToExcel() { var dataArray = new Array(); var table1 = document.getElementById(‘table1′); var rows = table1.rows for (var i = 0; i < rows.length; i++) { var cells = rows[i].cells; for (var j = 0; j < cells.length; j++) { dataArray.push(cells[j].innerText); dataArray.push(‘t’); } dataArray.pop(); dataArray.push(‘n’); } [...]

HTTP Cookies的一点知识

Cookies的作用是用来保存浏览器客户端的状态,会以文件的形式存放在浏览器的临时文件目录中;在HTTP的请求和应答过程中Cookie都放在Header段中,有两个格式的Header设置 1、服务器相应客户端的请求:使用Set-Cookie Header 2、客户端向服务器发送请求:使用Cookie Header 一般情况下Cookie传递如下:服务器端在响应中利用Set-Cookie header来创建一个Cookie,然后,浏览器在它的请求中通过Cookie header包含这个已经创建的Cookie,并且反它返回至服务器,从而完成浏览器的论证。 Cookie的格式: 基本格式:<name>=<value>[; <name>=<value>]… Set-Cookie Header可以有一些对Cookie的附属说明: [; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; httponly] 在客户端可以使用Javascript直接读写Cookie,使用的对象是document.cookie 详细的信息可以参考下面的链接: HTTP Cookies (Windows) HOWTO:防止在 Internet Explorer 中进行缓存 php中Cookie介绍及其使用