相关标签

使用 JScript 创建 .exe 或 .dll 文件

什么是 JScript? JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现。Internet Explorer 中的 JavaScript,实际上是指 JScript。JScript 已被 Windows Script Host(WSH)支持(WSH 中的 JavaScript shell scripting:C:\> cscript jslint.js)。JScript 最新的版本(JScript.NET)基于 ECMAScript 4.0 ,并且可以在 .Net 环境下编译。 .NET Framwork 中包含有 JScript 编译器 :JScriptCompiler (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe),其可以将 JScript 文件编译为一个 .exe 或者 .dll 文件。 为了方便使用,我们可以将 JScriptCompiler 的路径加入到环境变量(环境变量 –> 系统变量 –> Path)中。在 CMD 程序运行窗口中直接调用命令 “jsc”,就可以看到编译器相关的帮助选项。 jsc [选项] [[选项] …] JScript 编译器选项 […]

... 8 条评论 »

如何用 JavaScript 开发迷宫游戏

3月6日在杭州 Google GTUG 活动上的分享《Maze Game》,本想讲 《Android 手机开发及HTML5在手机开发中的应用》,但由于 Google 邀约得比较晚,来不及准备,就在原先准备在团队内分享的未完成 PPT ——《Maze Game》的基础上,做了补充和完善。 游戏部分思路来源于同事 季札 开发的迷宫游戏:www.sansi.org/static/maze/maze.html

... 6 条评论 »

Script 元素 type 属性的妙用

我们经常使用动态创建 JavaScript 的方式来实现 JavaScript 文件的无阻塞(Non-blocking)、并行下载(Parallel )。其实还可以添加自定义的 type 属性(比如 text/cache),达到预加载但不执行的效果: var doc = document, el = doc.createElement(“script”), head = doc.getElementsByTagName(‘head’)[0]; el.src = “http://yui.yahooapis.com/2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js”; el.type = “text/cache”; head.insertBefore(el, head.firstChild); 注:Firefox 3.6.x 不请求 JavaScript 文件。 扩展阅读: 《Preload CSS/JavaScript without execution》 《Preloading JS and CSS as Print Stylesheets》

... 14 条评论 »

获取 Textarea 的光标位置

在任何编辑器中,获取光标位置都是非常重要的,很多人可能认为较难,其实只要处理好浏览器的兼容,还是比较容易实现的。 下面我们一起来看看如何获取到 Textarea 元素中的光标位置(测试地址)。 首先,我们用 rangeData 对象作为数据存储,并获得焦点: var rangeData = {start: 0, end: 0, text: “” }; textarea.focus(); 对于非 IE 浏览器获取选区的起始和末尾位置其实非常容易: rangeData.start= el.selectionStart; rangeData.end = el.selectionEnd; 通过截取我们可以得到光标的选区内容: rangeData.text = (rangeData.start != rangeData.end) ? el.value.substring(rangeData.start, rangeData.end): “”; 而对于 IE 浏览器处理起来就比较麻烦了,但我们依旧可以获取到选区: oS = document.selection.createRange(); 同时还可获取 Textarea 元素的选区: // 为了使 oR 与 oS 在同一等级上比较,请勿使用:oR = ... 16 条评论 »

类型转换的小乐趣

在 玉伯 的文章 《一道大题目,嘿嘿》 中有这样一段代码: [] == ![] 也许很多同学迷惑:咦,这个如何转换呢? 首先,我们了解下逻辑 NOT(!)运算与等号(==)运算的一些基本规则: 逻辑 NOT 运算中,如果运算数是对象,返回 fasle; 等号运算中,如果一个运算数是 Boolean 值,在运算前,会将其转换成数字:false -> 0,true -> 1; 等号运算中,如果一个运算数是对象,另一个是数字,在运算前,会将对象转换成数字。 2010年11月2日补充:对象不能直接转换成数字型,可以将其转换成字符型,再将字符型转换成数字型。 根据上面的一些规则,我们再来看看原来的表达式如何演变: Step01: [] == ![] // 由于[]是对象,则 ![] 返回fasle,演变为 Step02。 Step02: [] == fasle // 由于 fasle 是 Boolean 值,则转换成数字 0,演变为 Step03。 Step03: [] == 0 // 由于 0是数字,[]是对... 9 条评论 »

JavaScript 中的 Base64 编码(一):Encoding

除了IE浏览器,其他所有主流的浏览器均支持原生的 Base64 编码: btoa(text) – base64 encodes text. atob(text) – base64 decodes text. 而对于 IE 我们可以根据已知的 Base64 编码原理进行编写: Base64 编码将每三个 8Bit 的字节(注:由于要求输入的字符为 8Bit 字节,故范围应该在 ASCII 字符范围内,即:\u0000-\u00ff)转换为四个 6Bit 的字节(3*8 = 4*6 = 24),然后在每个 6Bit 字节前添两位高位 0,组成四个 8Bit 的字节,最后再将每个 8Bit 字节转换成十进制的数字,对应 Base64 编码表(为了保证所输出的编码为可读字符,Base64制定了一个编码表,以便进行统一转换,编码表的大小为 2^6=64,即 Base64 名称的由来)输出编码后的字符。 如果原字节不足 3 的倍数,则用 0 填充,输出字符使用“=”,因此编码后输出的文本末尾可能会出现 1 或 2 个“=”(余数 = 原文字节数 ... 4 条评论 »

用 JavaScript 解数学题

题目:一个六位数,分别用2,3,4,5,6乘它,得到的五个新数仍是由原数中的六个数字组成,只是位置不同,则此六位数是多少? function evaluate() { var multiplier = [2,3,4,5,6], sortNumber = function (number) { return parseInt((number + ”).split(”).sort().join(”), 10); }, gameOver = false, // 判断是否已经找到,如果找到,结束循环 determine = function(origin) { var result, i, len = multiplier.length; for( i = 0; i < len; i++ ) { result = origin * multiplier[i]; if (result < 100000 || result […]

... 23 条评论 »

前端 JavaScript 相关的小Tips

受 SNS 后台开发同学的邀请,做的一次小分享,希望够简单、明了、有效。其实在给别人分享的同时,自己也能收获很多!

... 28 条评论 »

如何获取当前 select 元素的值

如果 select 元素下的所有 option 元素均没有指定 selected 属性,会默认选中第一个。 可以通过 select.selectedIndex 获取到选中的 option 元素的索引。 可以通过 select.options[select.selectedIndex] 获取到选中的 option 元素。 option 元素 <option selected=”selected” value=”value3″>text3</option>,可以通过 option.value 获得 option 元素的 value 属性值,即 value3;可以通过 option.text 获得 option 元素内的文本,即 text3。 如果 option 元素没有定义 value 属性,则 IE 中 option.value 无法获得,但 Safari、Opera、FireFox 依旧可以通过 option.value 获得,值同于 option.text 。 可以通过 option.attributes.value && option.attributes.value.specified 来判断 option […]

... 15 条评论 »

判断 iframe 是否加载完成的完美方法

一般来说,我们判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似: var iframe = document.createElement(“iframe”); iframe.src = “http://www.planabc.net”; if (!/*@cc_on!@*/0) { //if not IE iframe.onload = function(){ alert(“Local iframe is now loaded.”); }; } else { iframe.onreadystatechange = function(){ if (iframe.readyState == “complete”){ alert(“Local iframe is now loaded.”); } }; } document.body.appendChild(iframe); 最近, Nicholas C. Zakas 文章《Iframes, onload, and […]

... 41 条评论 »