Skip to content

Instantly share code, notes, and snippets.

@xyqfer
xyqfer / test.geolocation.js
Created October 2, 2013 01:32
检测地理位置支持
function testGeolocation() {
return "geolocation" in navigator;
}
@xyqfer
xyqfer / test.webgl.js
Created October 2, 2013 01:30
检测 webgl
function testWebgl() {
return !!window.WebGLRenderingContext;
}
@xyqfer
xyqfer / test.canvas.js
Created October 2, 2013 01:30
检测 canvas
function testCanvas() {
var elem = document.createElement("canvas");
return !!(elem.getContext && elem.getContext("2d"));
}
@xyqfer
xyqfer / requestAnimationFrame.js
Created October 1, 2013 07:25
requestAnimationFrame 兼容实现
(function() {
var lastTime = 0;
var vendors = ['webkit', 'moz'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || // Webkit中此取消方法的名字变了
window[vendors[x] + 'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame) {
@xyqfer
xyqfer / Tween.js
Created October 1, 2013 07:14
缓动算法
/*
* Tween.js
* t: current time(当前时间);
* b: beginning value(初始值);
* c: change in value(变化量);
* d: duration(持续时间)。
* you can visit 'http://easings.net/zh-cn' to get effect
*/
var Tween = {
@xyqfer
xyqfer / drag.upload.html
Created September 29, 2013 10:35
拖拽 && 上传
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#box {
border: 2px gray dotted;
width: 180px;
height: 160px;
@xyqfer
xyqfer / preload.js
Created September 29, 2013 07:05
预加载js
/* 需配合 load.js 使用 */
var preload;
if (/*@cc_on!@*/false) {
preload = function(src) {
new Image().src = src;
};
} else {
preload = function(src) {
var obj = document.createElement("object");
@xyqfer
xyqfer / Function.prototype.method.js
Created September 29, 2013 06:40
Function.prototype.method
Function.prototype.method = function(name, implementation) {
this.prototype[name] = implementation;
return this;
};
var Person = function(name) {
this.name = name;
}.method("getname", function() {
alert(this.name)
});
@xyqfer
xyqfer / memory.leaks.js
Created September 28, 2013 12:26
For Memory Leaks (IE6 and IE7)
/* http://javascript.crockford.com/memory/leak.html */
function purge(d) {
var a = d.attributes, i, l, n;
if (a) {
for (i = a.length - 1; i >= 0; i -= 1) {
n = a[i].name;
if (typeof d[n] === 'function') {
d[n] = null;
}
@xyqfer
xyqfer / obj.2.str.js
Created September 28, 2013 12:12
Object to String
var obj2string = function( obj, prefix ) {
var str = [];
for ( var prop in obj ) {
if ( obj.hasOwnProperty( prop ) ) {
var k = prefix ? prefix + '[' + prop + ']' : prop, v = obj[prop];
str.push( typeof v === 'object' ?
obj2string( v, k ) :
encodeURIComponent( k ) + '=' + encodeURIComponent( v ) );
}