自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(248)
  • 资源 (1)
  • 收藏
  • 关注

原创 检测浏览器使用什么语言

<br />此函数在网站做换肤功能时有用! //$$$$log(browserLanguage()) function browserLanguage() { var nav = navigator; return (nav.browserLanguage || nav.language || nav.userLanguage || "").substr(0,2); }

2010-11-08 00:14:00 546

原创 (转)CSS 圆角背景与三角形

<br />前端开发中两个很不错的小技巧, CSS三角形与圆角背景。 的确, 它们都可以通过图片来实现, 但, 抛开用代码实现可以减小图片加载量不说, 当你遇到三角形或圆角背景下还有一层非纯色背景时, 你又不得不考虑IE6 png兼容问题, 嗯, IE6,万恶之源。 此时, CSS三角形及圆角背景将是上佳选择。<br />查看演示: 点此查看DEMO<br />CSS圆角背景<br /><br />通过改变层叠元素的margin值实现圆角效果。当然,有人会说不用这么麻烦,CSS3几句代码就可以搞定,但目前来

2010-11-04 13:15:00 474 1

原创 javascript 测试工具abut发布

<br />abut全称为annotations-based unit testing,基于注释的单元测试工具,也可以就地取此英文的原义(毗邻)称呼它。众所周知,javascript实在不好做测试,即使我这个工具现在对事件响应这东西还是无可奈何的,这只能黑盒测试。不过,能白盒测试的,我们还是进行白盒测试。javascript经近几年的迅猛发展,也涌现诸如Qunit,JSpec这些优秀的测试框架。但我最后还是决定自己搞一个。原因如下:我喜欢自造轮子。由于在写框架(龟速进行中),倾向于选择器,测试工具等东西都出

2010-11-03 09:15:00 343

原创 IE6动态插入option

//@斯人 遇到个问题 select里插入一堆option 用document.createDocumentFragment来中转 这样IE6下 select 不能根据实际插入的option来自适应宽度了 //@TAOTAO 先隐藏select 然后插入 最后显示select就行了

2010-10-28 09:16:00 303

原创 不使用中间变量,交换int型的 a, b两个变量的值。

<br />群中的题目,不过这样大众脸的题想必大家都见过,就看能玩出什么新花招: //by ppchen var a = 10, b = 2; a = a + b; b = a - b; a = a - b; //by Mr.司马 var a = 10000,b=245 a = a^b; b = b^a; a = a ^b; //by cloudgamer var a = 33,b=44 a=[a,b] b=a[0] a=a[1] //by Mr.司

2010-10-28 09:16:00 687 2

原创 IE6动态插入option

//@斯人 遇到个问题 select里插入一堆option 用document.createDocumentFragment来中转 这样IE6下 select 不能根据实际插入的option来自适应宽度了 //@TAOTAO 先隐藏select 然后插入 最后显示select就行了

2010-10-28 09:15:00 262

原创 javascript天然的迭代器

<br />它源于群里的某一题目: 有一个数n=5,不用for循环,怎么返回[1,2,3,4,5]这样一个数组 <br />群的“糖果男孩”给的答案: function getArr(n) { var a = [], b = [], m = 0; a.length = n + 1; a.toString().replace(/,/g, function () { b.push(++m); }); r

2010-10-28 08:16:00 185

原创 一些javascript题目

var result = [10] + 1; console.log(result) "101" 存在运算符"+",意味着将[10]转化为一个值,相当于调用其valueOf()方法,而Array的valueOf相当于其toString var result = ['a', 'b', 'c'] + ""; console.log(result) "a,b,c" 与一个空字符相加,我们大可以就当成强行调用其toString方法,而Array的toString方法相当于调用其join

2010-10-23 10:17:00 218

原创 纯CSS细线伪表格

<br />不推荐用div、span去替代table,我这里情况复杂,被搞得没办法才出这晕招。 第1个格子 第2个格子 第3个格子 第4个格子

2010-10-19 21:17:00 150

原创 全新的链式操作

<br />这是每一个框架都遇到的问题,是使用原型扩展实现链式调用,还是把方法都绑定都一个对象中。如果使用原型扩展就意味着与其他所有走这条路的框架为敌,在这条路上有两个令人望而生畏的对手——Prototype与mootools。如果把方法都绑定都一个对象中(我通常称之为命名空间对象),方法调用起来就不那么优雅,即使是jQuery,也只能让实现节点的链式操作。但一个框架所能达到的高度,是由它的基础设施决定。jQuery在它所涉及的方面算是做得尽善尽美了,但有没有想到,mootools实现与此相同的功能,所需的

2010-10-17 23:30:00 197 1

原创 dom Framework oop模块v2

<br />正在重构整个框架,让命名空间对象dom也出于同一个继承体系下,就像mootools1.3的Type对象那样。<br />v2的目标大致如下:减少入侵性,只保留ECMA262v5及极个别最有用的扩展,lang模块将与核心模块合而为一模块即纯对象,去掉没有多大用处的protect方法,实现extend与include都能调用父方法去掉构造器中的智能调用父构造器的功能,以后调用父方法统一为this._super()增加不使用new关键字就能进行实例化(需要在配置对象中配置) //by 司徒正美 ht

2010-10-16 10:30:00 135

原创 javascript 随机数

// by 司徒正美 http://www.cnblogs.com/rubylouvre/ var native_random = Math.random; Math.random = function(min, max, exact) { if (arguments.length === 0) { return native_random(); } else if (arguments.length === 1) {

2010-10-09 23:30:00 147

原创 javascript 模板系统 ejs v6

<br />此版本有如下改进:吸取众人的意见,防止与ASP等后台模板的界定符冲突,默认左右界定符为<&,&>加入新的操作符<&~,至此整个操作符体系为: 为了迎合大规模开发的需要,后台数据统统增加@标识,一来便于修改,二来内部实现抛弃了with语句,强行让它们依附于data对象,让我们可以使用||设置默认值。 //dom.ejs v6 by 司徒正美 //http://www.cnblogs.com/rubylouvre/archive/2010/10/04/1841933.html ;(funct

2010-10-05 08:30:00 152

原创 回lifesinger 的国庆题目

<br />原题目地址 f = function() { return true; }; g = function() { return false; }; (function() { if (g() && [] == ![]) { f = function f() { return false; }; function g() { return true; } } })(); alert(f()); // true or false

2010-10-04 12:30:00 148

原创 valueOf与toString方法研究2

<br />我是出于一个“邪恶”的目的来研究它们的,因为目的过于邪恶,所以研究必须更为深入才能成功。但天机不可泄漏,大家跟着我享受过程即可。<br />我们先看两题: var date = new Date(); var date_string = date.toString(); var date_value = date.valueOf(); alert(date == date_string); alert(date == date_value); <br />true,

2010-10-02 13:30:00 142

原创 更好的浏览器判定

<br />偶看岁月如歌的《Behind a Gist》一文,提到一个实现浏览器嗅探与版本判定合而为一。刚好,我想去掉我IE那个基本JS引擎的IE判定,于是写了一个全新的东西。 //by 司徒正美 var ver = top.opera ? (opera.version().replace(//d$/, "") - 0) : parseFloat((/(?:IE |fox//|ome//|ion//)(/d+/./d)/. exec(navigato

2010-10-02 01:30:00 158

原创 valueOf与toString方法研究

<br />最后群里讨论一些怪题,有高手就想歪脑想hack这两个东西了,虽然最后失败了,但这精神是非常值得鼓励的。于是决定写一篇文章专门来介绍它们。<br />基本上,所有JS数据类型都拥有这两个方法,null除外。它们俩解决javascript值运算与显示的问题。<br />先看一例: //by 司徒正美 var aaa = { i: 10, valueOf: function() { return this.i+30; }, toSt

2010-10-01 23:30:00 131

原创 V8引擎过度优化的一个bug

<br />这个bug好像在3.0就存在,如今chrome7.0还没解决,我不得不专门写一篇文章来备忘一下了。 var expr = (new RegExp).compile('str'); alert(expr); // => undefined expr = new RegExp; expr.compile('str'); alert(expr); // => /str/ var expr = (new Re

2010-09-26 00:30:00 171

原创 parseIntRight

function parseIntRight(str,radix){ return parseInt(str.split(//D/).pop(),radix); }

2010-09-24 22:29:00 148

原创 jquery tabs插件

<br />写了一个jquery tabs插件,使用事件代理处理事件。<br />结构层是群里深度讨论得出的最好的结构。 <dl id="aaa"> <dt><a>切换卡1</a><a>切换卡2</a><a>切换卡3</a></dt> <dd>内容1</dd> <dd>内容2</dd> <dd>内容3</dd> </dl> selector字符串必须,容器的CSS选择符,最好符合我上面给出的结构,为一个dl元素。tabsSelec

2010-09-21 09:22:00 143

原创 判定浏览器是支持JIT

<br />这来源于一个非常现实的性能测试需求。要知道IE(除了刚诞生的IE9),其他出名的浏览器都支持JIT技术来提高代码的执行能力,那么我们进行性能测试时,通常会对某个函数的几个实现循环执行10000次来评估其优劣。但10000次有时对IE来说太多了,近几不可能的计算量就把它down掉了,对于一些旧点的标准浏览器也是如此,因此这个循环次数不能死定为一个数量级。这个量化标准我就规定为浏览器是否支持JIT,是就让它循环数多一点,不是就少一点。不过怎么判定它是否支持呢?虽然过度优化,可能会带来一些神奇的bug

2010-09-20 09:20:00 136

原创 Object.defineProperty

<br />ECMAScript 262v5带来的新东西,FF把它归入为javaScript 1.8.5的功能之一。语法: Object.defineProperty(obj, prop, descriptor) 参数:<br />obj:目标对象<br />prop:需要定义的属性或方法的名字。<br />descriptor:目标属性所拥有的特性。可供定义的特性列表:value:属性的值writable:如果为false,属性的值就不能被重写。get: 一旦目标属性被访问就会调回此方法,并将此方法的

2010-09-19 23:20:00 116

原创 另一种fib高效实现

<br />缓存形式的实现 var memoize = function(fn) { var cache = []; return function(i) { return (i in cache) ? cache[i] : (cache[i] = fn.call(arguments.callee, i)); }; } var fib = new memoize(function(i) { if (i == 0 || i == 1) re

2010-09-19 09:20:00 117

原创 IE中原生的base64支持

var dom = {}; dom.base64encode = function (data) { var xml_dom = new ActiveXObject("Microsoft.XMLDOM"); xml_dom.loadXML(''); xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes"); var no

2010-09-19 03:20:00 273

原创 Date对象的一些相关函数

<br />传入两个Date类型的日期,求出它们相隔多少天。 var getDatePeriod = function(start,finish){ return Math.abs(start*1-finish*1)/60/60/1000/24; } <br />传入一个Date类型的日期,求出它所在月的第一天。 var getFirstDateInMonth= function(date){ return new Date(date.

2010-09-16 09:20:00 116

原创 微型的javascript REPL

<br />REPL(Read Eval Print Loop)是一种非常有用的工具,能让我们即时运行代码得到结果。虽然相比于firebug的控制台来说,这简直不值一提,但在个人博客中提供演示时它还是比较有用。<br />下面是它的所有代码,包括html。 <textarea style="width:100%" onkeyup=" this.rows=(function(t){ for (var i=0,h=1;i<t.length;i++) if (t.charAt(i) == '/n

2010-09-09 00:19:00 116

原创 javascript ejs v4与v5

<br />没有加入新功能,只是提高了性能。<br />v2:之前最快的版本。 <!doctype html> <html> <head> <meta charset="utf-8"/> <meta content="IE=8" http-equiv="X-UA-Compatible"/> <meta name="keywords" content="javascript模板 by 司徒正美" /> <meta name

2010-08-31 00:19:00 156

原创 硬链接和符号链接

<br />符号链接就像是快捷方式。<br />而硬链接就像是一个同步的副本,删掉其中一个也不会影响另一个的存在。<br />C语言实现 #include int link( const char *path1, const char *path2 ); #include int symlink ( const char *path1, const char *path2); <br />node.js实现 fs.link(srcpath, dstpath, [callback])//异

2010-08-30 06:19:00 119

原创 javascript模板系统 ejs v3

<br />本版本增添了局部模板功能,并且允许主模板调用局部模板,局部模块调用局部模块,并去掉onsite变量,不再提供解析成毕的文档碎片给使用者。它使用双重缓存,一是缓存那些通过同步请求得到的文本而成的数组,一是整体解析完毕得到的模板函数。模板函数是通过数组元素拼凑动成解析而成的,这是大大提高了效率。不过由于新功能的加入,虽然动用了新的构筑算法也比不上v2的构筑速度了……<br />有人说不要使用<%与%>做界定符,这个问题我在v1版本已经提出过了,这些都是可以自定义的。本文的例子将演示一下如何使用Dja

2010-08-25 09:17:00 157

原创 rsplit函数

<br />类似split函数,但保留切割符。 var rsplit = function(str,reg){ var result = [], i =0 ,left; while(reg.exec(str)){ left = RegExp.leftContext; if(left){ result[i++] = left; } result[i++] = R

2010-08-14 09:11:00 456

原创 javascript 模板系统

<br />由于各种原因,被逼使用前台模板。看了一下其他JS模板库的实现,发现其原理并不难,遂决定重造轮子。使用ROR.erb风格。换言之,逻辑是写在"<%"与"%>"之间,如果是注释,则用"<%#"与"%>",凡是后台传过来的变量都加上@来标记。现在这个模板系统还没有搭载任何helper方法,也不依赖任何代码,因此非常精短。 <!doctype html> <html> <head> <title>postMessage by 司徒正美</title> <

2010-08-10 13:13:00 641

原创 正则学习笔记6

第一篇第二篇第三篇第四篇第五篇第六篇<br />问题:将除hr标签外的其他标签去掉,但要保留标签里的内容。 var str ='redhhhh字符串<br />字符串rrrrrrbbb' str = str.replace(/)[^>]+>/ig,"") alert(str); <br />运行代码<br />问题:把pub_form_year_01分割为'pub_from_year'和'01'两部分 /(.+)_(.+)/.test("pub_form_year_01"); alert(R

2010-07-30 06:14:00 296

原创 正则学习笔记5

第一篇第二篇第三篇第四篇第五篇第六篇<br />匹配长度 var str = "1234567890abcde"; alert(/^.{5,15}$/.test(str)); <br />运行代码<br />取HTML标签中间的内容 var str= "我是一个呆子!一个S子,一个狂人!"; reg=/(/]+//?/>)|(/]+/>)/g; str= str.replace(reg,""); alert(str); <br />运行代码获取匹配,非获取匹配,正向预查,负向预查<b

2010-07-29 17:13:00 248

原创 正则学习笔记3

第一篇第二篇第三篇第四篇第五篇第六篇<br />求正则:"x<br>x<br>x<br>...",其中“x”代表任意字符串,“...”表示后面还有内容,请问怎样才能把第5个<br>后的内容去掉。 var str="aa<br />aa<br />aaa<br />aaa<br />aa<br />aaaaaaaaaa<br />aaa<br />aaaaa"; var re = /^((/w+/){5})([/s/S]*)$/; var newStr=

2010-07-29 17:13:00 228

原创 纯CSS实现表头固定

纯CSS实现表头固定之所以难,主要在两点。一是占有最大市场份额的IE6不支持position:fixed。另一个,是人们想破头都想在一起表格中实现这种效果。不过外国真的人用纯CSS实现了这种效果,动用了数量惊人的CSS hacks……我觉得,如果搞到代码如此难懂且难扩展,还不如用javascript好了。碰巧今天我也遇到这种需求,换个视角想想,真的搞出来了。我们知道,CSS是负责表现,

2010-03-06 00:13:00 3682

原创 javascript微型模板系统

由于后台模板系统的强大,如rails的erb,javascript的模板系统一直处于被打压状态,但又由于后台的技术发展过快,日新月异,以及Ajax应用的普及,javascript还是有一藉之地的。如我们要从后台返回一个HTML片断,但事实上我们永远只能返回文本(responseText)或responseXML,如果你得到是json,其实后台已稍稍调用javascript把它eval成js

2010-03-04 17:14:00 1059 2

原创 Element.nodeName

http://d.hatena.ne.jp/nagaton/20060908/1157691716 コメントに思いついたのを勢いで書いてしまったけどちゃんと検証するお>< http://lowreal.net/logs/2006/09/09/1.html Content-Type: text/html docume

2010-02-22 18:15:00 362

原创 queryScopedSelector

17:32 querySelector と queryScopedSelector の違いがよくわからなかったんだけど、こんな感じだそうな。 element.queryScopedSelectorAll("div") generally becomeselement.parentNode.querySelectorAll(":scope div", elem

2010-02-22 18:15:00 314

原创 十步解决IE6的各种疑难杂症

虽然我也很想IE6早点死,但个人的主观能动性毕竟太有限了,我们唯一能做的是用一些手段减轻IE6带来的痛苦。1、使用文档类型尽量使用最严格的文档类型,确保你的页面运行于标准模式下。虽然用了它们,你可能不能用许多标签,如b,s,font等,但它们都可以用CSS来代替。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http

2010-02-21 20:13:00 1618 7

原创 判定对象是否为window

这是一个非常有趣的题目。我们先从Object.prototype.toString入手,看能否解决它。 alert(Object.prototype.toString.call(window)) 运行代码 结果是五花八门:[object Object]IE6[object Object]IE8[object Window]firefox3.6[ob

2010-02-20 17:12:00 427

支持中文Sphinx引擎

如题,有密码,具体可见我的博文 http://www.cnblogs.com/rubylouvre/archive/2009/07/23/1529029.html

2009-07-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除