jQuery 2.0将不再支持IE 6/7/8

jQuery 1.8 正经历一次大扫除,来移除不安全、低效、无效、失策的特性。我们已经着手这项工作,以便大家可以构建剔除某些库后更节省的定制版本。这些努力将让大家享用到,你真正所需要的没有多余东东的 jQuery API 。

既然我们在打扫房子,就该展望一下未来了。其中有件事干扰着我们的憧憬,那就是过时浏览器的” 冤魂”:IE6、IE7、IE8。在过去 10年中,老旧的 IE,一直是Web开发人员的心头刺。总的而言,某些网站来说还有三分之一的用户在用这些浏览器。还有很多用户需要这些网站提供的信息、服务和产品。对于 很多使用 jQuery 的网站来说,忽视这些用户,这不现实也无益处。
继续阅读jQuery 2.0将不再支持IE 6/7/8

摘自jQuery的JSON解析方法

PHP与AJAX黄金组合,基本都用到JSON数据格式,一般的框架(jQuery、Prototype等)都定义了格式化JSON的方法,但是在一些不能加载框架的场景里,我们不得不自己解析JSON数据了。
大多数人都用以下这简单的方法:

function evalJSON(str){
	try {
		return eval('(' + str + ')');
	} catch(e){
		return [];
	}
};

发现JSON的数据里出现一些特殊字符的时候会出错。
于是想到了jQuery,从中把JSON解析方法摘了出来。

function parseJSON(data){
	if ( typeof data !== "string" || !data ) {
		return null;
	}
	data = data.replace(/^\s+|\s+$/, '');
	if ( window.JSON && window.JSON.parse ) {
		return window.JSON.parse( data );
	}
	var rvalidchars = /^[\],:{}\s]*$/,
	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
	if ( rvalidchars.test( data.replace( rvalidescape, "@" )
		.replace( rvalidtokens, "]" )
		.replace( rvalidbraces, "")) ) {
		return ( new Function( "return " + data ) )();
	}
	return null;
}

去除html标签方法

有两个月没写博客了吧,被鄙视了,记录一个javascript函数,凑合当一篇吧。

function strip_tags (input, allowed) {
    // Strips HTML and PHP tags from a string  
    // 
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/strip_tags
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Luke Godfrey
    // +      input by: Pul
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +      input by: Alex
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Marc Palau
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Eric Nagel
    // +      input by: Bobby Drake
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Tomasz Wesolowski
    // +      input by: Evertjan Garretsen
    // +    revised by: Rafał Kukawski (http://blog.kukawski.pl/)
    // *     example 1: strip_tags('<p>Kevin</p> <b>van</b> <i>Zonneveld</i>', '<i><b>');
    // *     returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
    // *     example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
    // *     returns 2: '<p>Kevin van Zonneveld</p>'
    // *     example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
    // *     returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
    // *     example 4: strip_tags('1 < 5 5 > 1');
    // *     returns 4: '1 < 5 5 > 1'
    // *     example 5: strip_tags('1 <br/> 1');
    // *     returns 5: '1  1'
    // *     example 6: strip_tags('1 <br/> 1', '<br>');
    // *     returns 6: '1  1'
    // *     example 7: strip_tags('1 <br/> 1', '<br><br/>');
    // *     returns 7: '1 <br/> 1'
    allowed = (((allowed || "") + "").toLowerCase().match(/<&#91;a-z&#93;&#91;a-z0-9&#93;*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?(&#91;a-z&#93;&#91;a-z0-9&#93;*)\b&#91;^>]*>/gi,
        commentsAndPhpTags = /<!--&#91;\s\S&#93;*?-->|<\?(?:php)?&#91;\s\S&#93;*?\?>/gi;
    return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}