因为 IE 不原生支持字符串的 trim 方法,所以,只能再特殊处理。
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
};
}
因为 IE 不原生支持字符串的 trim 方法,所以,只能再特殊处理。
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
};
}
用途:如 Oauth 认证等需要的等长随机字符串。
/**
* By James from http://www.xinotes.org/notes/note/515/
*/
function randomString(length) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
if (! length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
}
/* examples */
// generate a random string of random length
randomString();
// generate a random string of length 8
randomString(8);
Tab 切换是一个常见的功能特性,称呼好像很多,比如焦点图、舌签切换等,我常叫为 Tab 切换。一个示意图如下:
普通的切换显示文字、图片,甚至是 Ajax 加载一般都不会有什么问题,不过,最近在做 flash 切换的时候发现了个问题,采用 display:block / none 来控制显示隐藏会导致 flash 重新加载。需要说明的是,并不是简单的重新渲染,而是重新请求下载。
想复制些东西却发现用 JavaScript 禁止了复制,于是想起了 keakon 的『破解网页禁止复制的Chrome插件:Enable Copy』,不错相对于插件,我更喜欢 bookmarklet 这种形式,于是将插件中的代码提取了出来(作者介意否?)
javascript:(function(){var doc = document;var body = doc.body;body.onselectstart = body.oncopy = body.onpaste = body.onkeydown = doc.onselectstart = doc.oncopy = doc.onpaste = doc.onkeydown = doc.oncontextmenu = null;})();
document.write(markup)是一个比较常用的语句,不过对它的规定其实没真正看过,直到看到有人问在jQuery的ready使用document.write的问题才令我想起去看看语言定义。
在MDN上找到相关说明。
向由document.open打开的文档流写入字符串。
一个常见的需求,无数人写过的东西,记录于此。
function mousePos (event) {
e = event || window.event;
doc = document.body || document.documentElement;
return {
'x' : e.pageX || e.clientX + doc.scrollLeft,
'y' : e.pageY || e.clientY + doc.scrollTop
};
}
偶尔看到个PHP版本的迅雷、快车、QQ旋风专有链接的转换,然后看了一下迅雷、快车、QQ旋风专链转换原理,再加上看到说除IE外的浏览器都已经支持base64的加密、解密,其中btoa是加密,atob是解密。一时兴起,就写了个JS版本。
首先是一段 HTML 代码:
<table id="tb">
<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr>
<tr><td>9</td><td>10</td><td>11</td><td>12</td></tr>
<tr><td>13</td><td>14</td><td>15</td><td>16</td></tr>
</table>
DOM解析
对于一段 table 的 HTML 代码,即使没有显式写出 tbody 结构,浏览器在解析的时候都会加上 tbody 结构。所以,对于以上代码,若想获取第一行,需要使用代码:
document.getElementById('tb').lastChild.firstChild; //第一行
//document.getelementById('tb').lastChild 得到的不是最后一行而是 tbody
一个闭包,简单地说,就是一个函数以及其定义时的上下文环境。
用代码来解释会更直观一点:
function outerFn() {
var name = "outer";
function innerFn() {
alert(name);
}
return innerFn;
}
var myFunc = outerFn();
myFunc(); // output "outer"
这样,myFunc 便是一个闭包,其包括了函数 innerFn() 和其上下文环境 name。
(更多…)