字符串長度截取javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
cutstr(str, len) {
var
temp, icount = 0,
patrn = /[^\x00-\xff]/,strre =
""
;
for
(
var
i = 0; i < str.length; i++) {
if
(icount < len - 1) {
temp = str.substr(i, 1);
if
(patrn.exec(temp) ==
null
) {
icount = icount + 1
}
else
{
icount = icount + 2
}
strre += temp
}
else
{
break
;
}
}
return
strre +
"..."
}
|
替換所有css
1
2
3
|
String.prototype.replaceAll =
function
(s1, s2) {
return
this
.replace(
new
RegExp(s1,
"gm"
), s2)
}
|
清除空格html
1
2
3
4
|
String.prototype.trim =
function
() {
var
reExtraSpace = /^\s*(.*?)\s+$/;
return
this
.replace(reExtraSpace,
"$1"
)
}
|
清除左空格/右空格java
1
2
|
function
ltrim(s){
return
s.replace( /^(\s*| *)/,
""
); }
function
rtrim(s){
return
s.replace( /(\s*| *)$/,
""
); }
|
判斷是否以某個字符串開頭android
1
2
3
|
String.prototype.startWith =
function
(s) {
return
this
.indexOf(s) == 0
}
|
判斷是否以某個字符串結束c++
1
2
3
4
|
String.prototype.endWith =
function
(s) {
var
d =
this
.length - s.length;
return
(d >= 0 &&
this
.lastIndexOf(s) == d)
}
|
轉義html標籤git
1
2
3
|
function
HtmlEncode(text) {
return
text.replace(/&/g,
'&'
).replace(/\
"/g, '"
').replace(/</g,
'<'
).replace(/>/g,
'>'
)
}
|
時間日期格式轉換正則表達式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
Date.prototype.Format =
function
(formatStr) {
var
str = formatStr;
var
Week = [
'日'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
];
str = str.replace(/yyyy|YYYY/,
this
.getFullYear());
str = str.replace(/yy|YY/, (
this
.getYear() % 100) > 9 ? (
this
.getYear() % 100).toString() :
'0'
+ (
this
.getYear() % 100));
str = str.replace(/MM/, (
this
.getMonth() + 1) > 9 ? (
this
.getMonth() + 1).toString() :
'0'
+ (
this
.getMonth() + 1));
str = str.replace(/M/g, (
this
.getMonth() + 1));
str = str.replace(/w|W/g, Week[
this
.getDay()]);
str = str.replace(/dd|DD/,
this
.getDate() > 9 ?
this
.getDate().toString() :
'0'
+
this
.getDate());
str = str.replace(/d|D/g,
this
.getDate());
str = str.replace(/hh|HH/,
this
.getHours() > 9 ?
this
.getHours().toString() :
'0'
+
this
.getHours());
str = str.replace(/h|H/g,
this
.getHours());
str = str.replace(/mm/,
this
.getMinutes() > 9 ?
this
.getMinutes().toString() :
'0'
+
this
.getMinutes());
str = str.replace(/m/g,
this
.getMinutes());
str = str.replace(/ss|SS/,
this
.getSeconds() > 9 ?
this
.getSeconds().toString() :
'0'
+
this
.getSeconds());
str = str.replace(/s|S/g,
this
.getSeconds());
return
str
}
|
判斷是否爲數字類型sql
1
2
3
4
5
6
7
8
|
function
isDigit(value) {
var
patrn = /^[0-9]*$/;
if
(patrn.exec(value) ==
null
|| value ==
""
) {
return
false
}
else
{
return
true
}
}
|
設置cookie值windows
1
2
3
4
5
6
7
8
9
|
function
setCookie(name, value, Hours) {
var
d =
new
Date();
var
offset = 8;
var
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var
nd = utc + (3600000 * offset);
var
exp =
new
Date(nd);
exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
document.cookie = name +
"="
+ escape(value) +
";path=/;expires="
+ exp.toGMTString() +
";domain=360doc.com;"
}
|
獲取cookie值
1
2
3
4
5
|
function
getCookie(name) {
var
arr = document.cookie.match(
new
RegExp(
"(^| )"
+ name +
"=([^;]*)(;|$)"
));
if
(arr !=
null
)
return
unescape(arr[2]);
return
null
}
|
加入收藏夾
1
2
3
4
5
6
7
8
9
10
11
|
function
AddFavorite(sURL, sTitle) {
try
{
window.external.addFavorite(sURL, sTitle)
}
catch
(e) {
try
{
window.sidebar.addPanel(sTitle, sURL,
""
)
}
catch
(e) {
alert(
"加入收藏失敗,請使用Ctrl+D進行添加"
)
}
}
}
|
設爲首頁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function
setHomepage() {
if
(document.all) {
document.body.style.behavior =
'url(#default#homepage)'
;
document.body.setHomePage(
'http://w3cboy.com'
)
}
else
if
(window.sidebar) {
if
(window.netscape) {
try
{
netscape.security.PrivilegeManager.enablePrivilege(
"UniversalXPConnect"
)
}
catch
(e) {
alert(
"該操做被瀏覽器拒絕,若是想啓用該功能,請在地址欄內輸入 about:config,而後將項 signed.applets.codebase_principal_support 值該爲true"
)
}
}
var
prefs = Components.classes[
'@mozilla.org/preferences-service;1'
].getService(Components.interfaces.nsIPrefBranch);
prefs.setCharPref(
'browser.startup.homepage'
,
'http://w3cboy.com'
)
}
}
|
加載樣式文件
1
2
3
4
5
6
7
8
9
10
11
12
|
function
LoadStyle(url) {
try
{
document.createStyleSheet(url)
}
catch
(e) {
var
cssLink = document.createElement(
'link'
);
cssLink.rel =
'stylesheet'
;
cssLink.type =
'text/css'
;
cssLink.href = url;
var
head = document.getElementsByTagName(
'head'
)[0];
head.appendChild(cssLink)
}
}
|
返回腳本內容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
evalscript(s) {
if
(s.indexOf(
'<script'
) == -1)
return
s;
var
p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
var
arr = [];
while
(arr = p.exec(s)) {
var
p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
var
arr1 = [];
arr1 = p1.exec(arr[0]);
if
(arr1) {
appendscript(arr1[1],
''
, arr1[2], arr1[3]);
}
else
{
p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
arr1 = p1.exec(arr[0]);
appendscript(
''
, arr1[2], arr1[1].indexOf(
'reload='
) != -1);
}
}
return
s;
}
|
清除腳本內容
1
2
3
|
function
stripscript(s) {
return
s.replace(/<script.*?>.*?<\/script>/ig,
''
);
}
|
動態加載腳本文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
function
appendscript(src, text, reload, charset) {
var
id = hash(src + text);
if
(!reload && in_array(id, evalscripts))
return
;
if
(reload && $(id)) {
$(id).parentNode.removeChild($(id));
}
evalscripts.push(id);
var
scriptNode = document.createElement(
"script"
);
scriptNode.type =
"text/javascript"
;
scriptNode.id = id;
scriptNode.charset = charset ? charset: (BROWSER.firefox ? document.characterSet: document.charset);
try
{
if
(src) {
scriptNode.src = src;
scriptNode.onloadDone =
false
;
scriptNode.onload =
function
() {
scriptNode.onloadDone =
true
;
JSLOADED[src] = 1;
};
scriptNode.onreadystatechange =
function
() {
if
((scriptNode.readyState ==
'loaded'
|| scriptNode.readyState ==
'complete'
) && !scriptNode.onloadDone) {
scriptNode.onloadDone =
true
;
JSLOADED[src] = 1;
}
};
}
else
if
(text) {
scriptNode.text = text;
}
document.getElementsByTagName(
'head'
)[0].appendChild(scriptNode);
}
catch
(e) {}
}
|
返回按ID檢索的元素對象
1
2
3
|
function
$(id) {
return
! id ?
null
: document.getElementById(id);
}
|
跨瀏覽器綁定事件
1
2
3
4
5
6
7
8
9
10
11
12
|
function
addEventSamp(obj, evt, fn) {
if
(!oTarget) {
return
;
}
if
(obj.addEventListener) {
obj.addEventListener(evt, fn,
false
);
}
else
if
(obj.attachEvent) {
obj.attachEvent(
'on'
+ evt, fn);
}
else
{
oTarget[
"on"
+ sEvtType] = fn;
}
}
|
跨瀏覽器刪除事件
1
2
3
4
5
6
7
8
9
10
11
12
|
function
delEvt(obj, evt, fn) {
if
(!obj) {
return
;
}
if
(obj.addEventListener) {
obj.addEventListener(evt, fn,
false
);
}
else
if
(oTarget.attachEvent) {
obj.attachEvent(
"on"
+ evt, fn);
}
else
{
obj[
"on"
+ evt] = fn;
}
}
|
爲元素添加on方法
1
2
3
4
5
6
7
8
|
Element.prototype.on = Element.prototype.addEventListener;
NodeList.prototype.on =
function
(event, fn) {、 [][
'forEach'
].call(
this
,
function
(el) {
el.on(event, fn);
});
return
this
;
};
|
爲元素添加trigger方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Element.prototype.trigger =
function
(type, data) {
var
event = document.createEvent(
'HTMLEvents'
);
event.initEvent(type,
true
,
true
);
event.data = data || {};
event.eventName = type;
event.target =
this
;
this
.dispatchEvent(event);
return
this
;
};
NodeList.prototype.trigger =
function
(event) { [][
'forEach'
].call(
this
,
function
(el) {
el[
'trigger'
](event);
});
return
this
;
};
|
檢驗URL連接是否有效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
getUrlState(URL) {
var
xmlhttp =
new
ActiveXObject(
"microsoft.xmlhttp"
);
xmlhttp.Open(
"GET"
, URL,
false
);
try
{
xmlhttp.Send();
}
catch
(e) {} finally {
var
result = xmlhttp.responseText;
if
(result) {
if
(xmlhttp.Status == 200) {
return
(
true
);
}
else
{
return
(
false
);
}
}
else
{
return
(
false
);
}
}
}
|
格式化CSS樣式代碼
1
2
3
4
5
6
7
8
9
|
function
formatCss(s) {
//格式化代碼
s = s.replace(/\s*([\{\}\:\;\,])\s*/g,
"$1"
);
s = s.replace(/;\s*;/g,
";"
);
//清除連續分號
s = s.replace(/\,[\s\.\
#\d]*{/g, "{");
s = s.replace(/([^\s])\{([^\s])/g,
"$1 {\n\t$2"
);
s = s.replace(/([^\s])\}([^\n]*)/g,
"$1\n}\n$2"
);
s = s.replace(/([^\s]);([^\s\}])/g,
"$1;\n\t$2"
);
return
s;
}
|
壓縮CSS樣式代碼
1
2
3
4
5
6
7
8
|
function
compressCss(s) {
//壓縮代碼
s = s.replace(/\/\*(.|\n)*?\*\
//g, ""); //刪除註釋
s = s.replace(/\s*([\{\}\:\;\,])\s*/g,
"$1"
);
s = s.replace(/\,[\s\.\
#\d]*\{/g, "{"); //容錯處理
s = s.replace(/;\s*;/g,
";"
);
//清除連續分號
s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
//去掉首尾空白
return
(s ==
null
) ?
""
: s[1];
}
|
獲取當前路徑
1
2
3
4
5
6
|
var
currentPageUrl =
""
;
if
(
typeof
this
.href ===
"undefined"
) {
currentPageUrl = document.location.toString().toLowerCase();
}
else
{
currentPageUrl =
this
.href.toString().toLowerCase();
}
|
判斷是否移動設備
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function
isMobile() {
if
(
typeof
this
._isMobile ===
'boolean'
) {
return
this
._isMobile;
}
var
screenWidth =
this
.getScreenWidth();
var
fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
var
fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() ===
"new"
);
if
(!fixViewPortsExperiment) {
if
(!
this
.isAppleMobileDevice()) {
screenWidth = screenWidth / window.devicePixelRatio;
}
}
var
isMobileScreenSize = screenWidth < 600;
var
isMobileUserAgent =
false
;
this
._isMobile = isMobileScreenSize &&
this
.isTouchScreen();
return
this
._isMobile;
}
|
判斷是否移動設備訪問
1
2
3
|
function
isMobileUserAgent() {
return
(/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
}
|
判斷是否蘋果移動設備訪問
1
2
3
|
function
isAppleMobileDevice(){
return
(/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
}
|
判斷是否安卓移動設備訪問
1
2
3
|
function
isAndroidMobileDevice(){
return
(/android/i.test(navigator.userAgent.toLowerCase()));
}
|
判斷是否Touch屏幕
1
2
3
|
function
isTouchScreen(){
return
((
'ontouchstart'
in
window) || window.DocumentTouch && document
instanceof
DocumentTouch);
}
|
判斷是否打開視窗
1
2
3
|
function
isViewportOpen() {
return
!!document.getElementById(
'wixMobileViewport'
);
}
|
獲取移動設備初始化大小
1
2
3
4
5
6
7
8
9
10
|
function
getInitZoom() {
if
(!
this
._initZoom) {
var
screenWidth = Math.min(screen.height, screen.width);
if
(
this
.isAndroidMobileDevice() && !
this
.isNewChromeOnAndroid()) {
screenWidth = screenWidth / window.devicePixelRatio;
}
this
._initZoom = screenWidth / document.body.offsetWidth;
}
return
this
._initZoom;
}
|
獲取移動設備最大化大小
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function
getZoom() {
var
screenWidth = (Math.abs(window.orientation) === 90) ? Math.max(screen.height, screen.width) : Math.min(screen.height, screen.width);
if
(
this
.isAndroidMobileDevice() && !
this
.isNewChromeOnAndroid()) {
screenWidth = screenWidth / window.devicePixelRatio;
}
var
FixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
var
FixViewPortsExperimentRunning = FixViewPortsExperiment && (FixViewPortsExperiment ===
"New"
|| FixViewPortsExperiment ===
"new"
);
if
(FixViewPortsExperimentRunning) {
return
screenWidth / window.innerWidth;
}
else
{
return
screenWidth / document.body.offsetWidth;
}
}
|
獲取移動設備屏幕寬度
1
2
3
4
5
6
7
8
9
10
11
|
function
getScreenWidth() {
var
smallerSide = Math.min(screen.width, screen.height);
var
fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
var
fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() ===
"new"
);
if
(fixViewPortsExperiment) {
if
(
this
.isAndroidMobileDevice() && !
this
.isNewChromeOnAndroid()) {
smallerSide = smallerSide / window.devicePixelRatio;
}
}
return
smallerSide;
}
|
完美判斷是否爲網址
1
2
3
4
5
6
7
8
|
function
IsURL(strUrl) {
var
regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i
if
(regular.test(strUrl)) {
return
true
;
}
else
{
return
false
;
}
}
|
getElementsByClassName
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function
getElementsByClassName(name) {
var
tags = document.getElementsByTagName(
'*'
) || document.all;
var
els = [];
for
(
var
i = 0; i < tags.length; i++) {
if
(tags.className) {
var
cs = tags.className.split(
' '
);
for
(
var
j = 0; j < cs.length; j++) {
if
(name == cs[j]) {
els.push(tags);
break
}
}
}
}
return
els
}
|
獲取頁面高度
1
2
3
4
5
6
7
|
function
getPageHeight() {
var
g = document,
a = g.body,
f = g.documentElement,
d = g.compatMode ==
"BackCompat"
? a: g.documentElement;
return
Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);
}
|
獲取頁面scrollLeft
1
2
3
4
|
function
getPageScrollLeft(){
var
a = document;
return
a.documentElement.scrollLeft || a.body.scrollLeft;
}
|
獲取頁面可視寬度
1
2
3
4
5
|
function
getPageViewWidth() {
var
d = document,
a = d.compatMode ==
"BackCompat"
? d.body: d.documentElement;
return
a.clientWidth;
}
|
獲取頁面寬度
1
2
3
4
5
6
7
|
function
getPageWidth() {
var
g = document,
a = g.body,
f = g.documentElement,
d = g.compatMode ==
"BackCompat"
? a: g.documentElement;
return
Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);
}
|
獲取頁面scrollTop
1
2
3
4
|
function
getPageScrollTop() {
var
a = document;
return
a.documentElement.scrollTop || a.body.scrollTop;
}
|
獲取頁面可視高度
1
2
3
4
5
|
function
getPageViewHeight() {
var
d = document,
a = d.compatMode ==
"BackCompat"
? d.body: d.documentElement;
return
a.clientHeight;
}
|
去掉url前綴
1
2
3
4
5
6
7
|
function
removeUrlPrefix(a) {
a = a.replace(/:/g,
":"
).replace(/./g,
"."
).replace(///g,
"/"
);
while
(trim(a).toLowerCase().indexOf(
"http://"
) == 0) {
a = trim(a.replace(/http:\/\
//i, ""));
}
return
a;
}
|
隨機數時間戳
1
2
3
4
5
|
function
uniqueId() {
var
a = Math.random,
b = parseInt;
return
Number(
new
Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());
}
|
全角半角轉換
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//iCase: 0全到半,1半到全,其餘不轉化
function
chgCase(sStr, iCase) {
if
(
typeof
sStr !=
"string"
|| sStr.length <= 0 || !(iCase === 0 || iCase == 1)) {
return
sStr;
}
var
i, oRs = [],
iCode;
if
(iCase) {
/*半->全*/
for
(i = 0; i < sStr.length; i += 1) {
iCode = sStr.charCodeAt(i);
if
(iCode == 32) {
iCode = 12288;
}
else
if
(iCode < 127) {
iCode += 65248;
}
oRs.push(String.fromCharCode(iCode));
}
}
else
{
/*全->半*/
for
(i = 0; i < sStr.length; i += 1) {
iCode = sStr.charCodeAt(i);
if
(iCode == 12288) {
iCode = 32;
}
else
if
(iCode > 65280 && iCode < 65375) {
iCode -= 65248;
}
oRs.push(String.fromCharCode(iCode));
}
}
return
oRs.join(
""
);
}
|
確認是否鍵盤有效輸入值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
function
checkKey(iKey) {
if
(iKey == 32 || iKey == 229) {
return
true
;
}
/*空格和異常*/
if
(iKey > 47 && iKey < 58) {
return
true
;
}
/*數字*/
if
(iKey > 64 && iKey < 91) {
return
true
;
}
/*字母*/
if
(iKey > 95 && iKey < 108) {
return
true
;
}
/*數字鍵盤1*/
if
(iKey > 108 && iKey < 112) {
return
true
;
}
/*數字鍵盤2*/
if
(iKey > 185 && iKey < 193) {
return
true
;
}
/*符號1*/
if
(iKey > 218 && iKey < 223) {
return
true
;
}
/*符號2*/
return
false
;
}
|
獲取網頁被捲去的位置
1
2
3
4
5
6
7
8
9
|
function
getScrollXY() {
return
document.body.scrollTop ? {
x: document.body.scrollLeft,
y: document.body.scrollTop
}: {
x: document.documentElement.scrollLeft,
y: document.documentElement.scrollTop
}
}
|
日期格式化函數+調用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Date.prototype.format =
function
(format) {
var
o = {
"M+"
:
this
.getMonth() + 1,
//month
"d+"
:
this
.getDate(),
//day
"h+"
:
this
.getHours(),
//hour
"m+"
:
this
.getMinutes(),
//minute
"s+"
:
this
.getSeconds(),
//second
"q+"
: Math.floor((
this
.getMonth() + 3) / 3),
//quarter
"S"
:
this
.getMilliseconds()
//millisecond
};
if
(/(y+)/.test(format)) format = format.replace(RegExp.$1, (
this
.getFullYear() +
""
).substr(4 - RegExp.$1.length));
for
(
var
k
in
o) {
if
(
new
RegExp(
"("
+ k +
")"
).test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : (
"00"
+ o[k]).substr((
""
+ o[k]).length));
}
return
format;
}
alert(
new
Date().format(
"yyyy-MM-dd hh:mm:ss"
));
|
時間個性化輸出功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/*
一、< 60s, 顯示爲「剛剛」
二、>= 1min && < 60 min, 顯示與當前時間差「XX分鐘前」
三、>= 60min && < 1day, 顯示與當前時間差「今天 XX:XX」
四、>= 1day && < 1year, 顯示日期「XX月XX日 XX:XX」
五、>= 1year, 顯示具體日期「XXXX年XX月XX日 XX:XX」
*/
function
timeFormat(time) {
var
date =
new
Date(time),
curDate =
new
Date(),
year = date.getFullYear(),
month = date.getMonth() + 10,
day = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes(),
curYear = curDate.getFullYear(),
curHour = curDate.getHours(),
timeStr;
if
(year < curYear) {
timeStr = year +
'年'
+ month +
'月'
+ day +
'日 '
+ hour +
':'
+ minute;
}
else
{
var
pastTime = curDate - date,
pastH = pastTime / 3600000;
if
(pastH > curHour) {
timeStr = month +
'月'
+ day +
'日 '
+ hour +
':'
+ minute;
}
else
if
(pastH >= 1) {
timeStr =
'今天 '
+ hour +
':'
+ minute +
'分'
;
}
else
{
var
pastM = curDate.getMinutes() - minute;
if
(pastM > 1) {
timeStr = pastM +
'分鐘前'
;
}
else
{
timeStr =
'剛剛'
;
}
}
}
return
timeStr;
}
|
解決offsetX兼容性問題
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
// 針對火狐不支持offsetX/Y
function
getOffset(e) {
var
target = e.target,
// 當前觸發的目標對象
eventCoord, pageCoord, offsetCoord;
// 計算當前觸發元素到文檔的距離
pageCoord = getPageCoord(target);
// 計算光標到文檔的距離
eventCoord = {
X: window.pageXOffset + e.clientX,
Y: window.pageYOffset + e.clientY
};
// 相減獲取光標到第一個定位的父元素的座標
offsetCoord = {
X: eventCoord.X - pageCoord.X,
Y: eventCoord.Y - pageCoord.Y
};
return
offsetCoord;
}
function
getPageCoord(element) {
var
coord = {
X: 0,
Y: 0
};
// 計算從當前觸發元素到根節點爲止,
// 各級 offsetParent 元素的 offsetLeft 或 offsetTop 值之和
while
(element) {
coord.X += element.offsetLeft;
coord.Y += element.offsetTop;
element = element.offsetParent;
}
return
coord;
}
|
經常使用的正則表達式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
//正整數
/ ^[0 - 9] * [1 - 9][0 - 9] * $ / ;
//負整數
/ ^-[0 - 9] * [1 - 9][0 - 9] * $ / ;
//正浮點數
/ ^(([0 - 9] + \. [0 - 9] * [1 - 9][0 - 9] * ) | ([0 - 9] * [1 - 9][0 - 9] * \. [0 - 9] + ) | ([0 - 9] * [1 - 9][0 - 9] * )) $ / ;
//負浮點數
/ ^( - (([0 - 9] + \. [0 - 9] * [1 - 9][0 - 9] * ) | ([0 - 9] * [1 - 9][0 - 9] * \. [0 - 9] + ) | ([0 - 9] * [1 - 9][0 - 9] * ))) $ / ;
//浮點數
/ ^( - ?\d + )(\.\d + ) ? $ / ;
//email地址
/ ^[\w - ] + (\. [\w - ] + ) * @ [\w - ] + (\. [\w - ] + ) + $ / ;
//url地址
/ ^[a - zA - z] + :
//(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;
或: ^ http: \ / \ / [A - Za - z0 - 9] + \. [A - Za - z0 - 9] + [\ /= \ ? %\ - &_~`@ [\]\
':+!]*([^<>\"\"])*$
//年/月/日(年-月-日、年.月.日)
/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;
//匹配中文字符
/[\u4e00-\u9fa5]/;
//匹配賬號是否合法(字母開頭,容許5-10字節,容許字母數字下劃線)
/^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;
//匹配空白行的正則表達式
/\n\s*\r/;
//匹配中國郵政編碼
/[1-9]\d{5}(?!\d)/;
//匹配身份證
/\d{15}|\d{18}/;
//匹配國內電話號碼
/(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/;
//匹配IP地址
/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/;
//匹配首尾空白字符的正則表達式
/^\s*|\s*$/;
//匹配HTML標記的正則表達式
< (\S*?)[^>]*>.*?|< .*? />;
//sql 語句
^(select|drop|delete|create|update|insert).*$
//提取信息中的網絡連接
(h|H)(r|R)(e|E)(f|F) *= *('
| ")?(\w|\\|\/|\.)+(
'|" | *|>) ?
//提取信息中的郵件地址
\w + ([ - +.]\w + ) * @\w + ([ - .]\w + ) * \.\w + ([ - .]\w + ) *
//提取信息中的圖片連接
(s | S)(r | R)(c | C) *= *('
|")?(\w|\\|\/|\.)+(' |
"| *|>)?
//提取信息中的 IP 地址
(\d+)\.(\d+)\.(\d+)\.(\d+)
//取信息中的中國手機號碼
(86)*0*13\d{9}
//提取信息中的中國郵政編碼
[1-9]{1}(\d+){5}
//提取信息中的浮點數(即小數)
(-?\d*)\.?\d+
//提取信息中的任何數字
(-?\d*)(\.\d+)?
//電話區號
^0\d{2,3}$
//騰訊 QQ 號
^[1-9]*[1-9][0-9]*$
//賬號(字母開頭,容許 5-16 字節,容許字母數字下劃線)
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
//中文、英文、數字及下劃線
^[\u4e00-\u9fa5_a-zA-Z0-9]+$"
|
返回頂部的通用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function
backTop(btnId) {
var
btn = document.getElementById(btnId);
var
d = document.documentElement;
var
b = document.body;
window.onscroll = set;
btn.style.display =
"none"
;
btn.onclick =
function
() {
btn.style.display =
"none"
;
window.onscroll =
null
;
this
.timer = setInterval(
function
() {
d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
if
((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);
},
10);
};
function
set() {
btn.style.display = (d.scrollTop + b.scrollTop > 100) ?
'block'
:
"none"
}
};
backTop(
'goTop'
);
|
得到URL中GET參數值
1
2
3
4
5
6
7
8
9
10
11
|
// 用法:若是地址是 test.htm?t1=1&t2=2&t3=3, 那麼能取得:GET["t1"], GET["t2"], GET["t3"]
function
get_get() {
querystr = window.location.href.split(
"?"
)
if
(querystr[1]) {
GETs = querystr[1].split(
"&"
);
GET = [];
for
(i = 0; i < GETs.length; i++) {
tmp_arr = GETs.split(
"="
) key = tmp_arr[0] GET[key] = tmp_arr[1]
}
}
return
querystr[1];
}
|
打開一個窗體通用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function
openWindow(url, windowName, width, height) {
var
x = parseInt(screen.width / 2.0) - (width / 2.0);
var
y = parseInt(screen.height / 2.0) - (height / 2.0);
var
isMSIE = (navigator.appName ==
"Microsoft Internet Explorer"
);
if
(isMSIE) {
var
p =
"resizable=1,location=no,scrollbars=no,width="
;
p = p + width;
p = p +
",height="
;
p = p + height;
p = p +
",left="
;
p = p + x;
p = p +
",top="
;
p = p + y;
retval = window.open(url, windowName, p);
}
else
{
var
win = window.open(url,
"ZyiisPopup"
,
"top="
+ y +
",left="
+ x +
",scrollbars="
+ scrollbars +
",dialog=yes,modal=yes,width="
+ width +
",height="
+ height +
",resizable=no"
);
eval(
"try { win.resizeTo(width, height); } catch(e) { }"
);
win.focus();
}
}
|
提取頁面代碼中全部網址
1
2
|
var
aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\
"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("
\r\n
").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm, "
");
alert(aa);
|
清除相同的數組
1
2
3
4
5
6
7
8
9
10
|
String.prototype.unique =
function
() {
var
x =
this
.split(/[\r\n]+/);
var
y =
''
;
for
(
var
i = 0; i < x.length; i++) {
if
(!
new
RegExp(
"^"
+ x.replace(/([^\w])/ig,
"\\$1"
) +
"$"
,
"igm"
).test(y)) {
y += x +
"\r\n"
}
}
return
y
};
|
按字母排序,對每行進行數組排序
1
2
3
4
5
|
function
SetSort() {
var
text = K1.value.split(/[\r\n]/).sort().join(
"\r\n"
);
//順序
var
test = K1.value.split(/[\r\n]/).sort().reverse().join(
"\r\n"
);
//反序
K1.value = K1.value != text ? text: test;
}
|
字符串反序
1
2
3
|
function
IsReverse(text) {
return
text.split(
''
).reverse().join(
''
);
}
|
清除html代碼中的腳本
1
2
3
4
5
6
7
8
9
10
11
|
function
clear_script() {
K1.value = K1.value.replace(/<script.*?>[\s\S]*?<\/script>|\s+on[a-zA-Z]{3,16}\s?=\s?
"[\s\S]*?"
|\s+on[a-zA-Z]{3,16}\s?=\s?
'[\s\S]*?'
|\s+on[a-zA-Z]{3,16}\s?=[^ >]+/ig,
""
);
}動態執行JavaScript腳本
function
javascript() {
try
{
eval(K1.value);
}
catch
(e) {
alert(e.message);
}
}
|
動態執行VBScript腳本
1
2
3
4
5
6
7
8
9
|
function
vbscript() {
try
{
var
script = document.getElementById(
"K1"
).value;
if
(script.trim() ==
""
)
return
;
window.execScript(
'On Error Resume Next \n'
+ script +
'\n If Err.Number<>0 Then \n MsgBox "請輸入正確的VBScript腳本!",48,"腳本錯誤!" \n End If'
,
"vbscript"
)
}
catch
(e) {
alert(e.message);
}
}
|
金額大寫轉換函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
function
transform(tranvalue) {
try
{
var
i = 1;
var
dw2 =
new
Array(
""
,
"萬"
,
"億"
);
//大單位
var
dw1 =
new
Array(
"拾"
,
"佰"
,
"仟"
);
//小單位
var
dw =
new
Array(
"零"
,
"壹"
,
"貳"
,
"叄"
,
"肆"
,
"伍"
,
"陸"
,
"柒"
,
"捌"
,
"玖"
);
//整數部分用
//如下是小寫轉換成大寫顯示在合計大寫的文本框中
//分離整數與小數
var
source = splits(tranvalue);
var
num = source[0];
var
dig = source[1];
//轉換整數部分
var
k1 = 0;
//計小單位
var
k2 = 0;
//計大單位
var
sum = 0;
var
str =
""
;
var
len = source[0].length;
//整數的長度
for
(i = 1; i <= len; i++) {
var
n = source[0].charAt(len - i);
//取得某個位數上的數字
var
bn = 0;
if
(len - i - 1 >= 0) {
bn = source[0].charAt(len - i - 1);
//取得某個位數前一位上的數字
}
sum = sum + Number(n);
if
(sum != 0) {
str = dw[Number(n)].concat(str);
//取得該數字對應的大寫數字,並插入到str字符串的前面
if
(n ==
'0'
) sum = 0;
}
if
(len - i - 1 >= 0) {
//在數字範圍內
if
(k1 != 3) {
//加小單位
if
(bn != 0) {
str = dw1[k1].concat(str);
}
k1++;
}
else
{
//不加小單位,加大單位
k1 = 0;
var
temp = str.charAt(0);
if
(temp ==
"萬"
|| temp ==
"億"
)
//若大單位前沒有數字則捨去大單位
str = str.substr(1, str.length - 1);
str = dw2[k2].concat(str);
sum = 0;
}
}
if
(k1 == 3) {
//小單位到千則大單位進一
k2++;
}
}
//轉換小數部分
var
strdig =
""
;
if
(dig !=
""
) {
var
n = dig.charAt(0);
if
(n != 0) {
strdig += dw[Number(n)] +
"角"
;
//加數字
}
var
n = dig.charAt(1);
if
(n != 0) {
strdig += dw[Number(n)] +
"分"
;
//加數字
}
}
str +=
"元"
+ strdig;
}
catch
(e) {
return
"0元"
;
}
return
str;
}
//拆分整數與小數
function
splits(tranvalue) {
var
value =
new
Array(
''
,
''
);
temp = tranvalue.split(
"."
);
for
(
var
i = 0; i < temp.length; i++) {
value = temp;
}
return
value;
}
|
resize的操做
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
(
function
() {
var
fn =
function
() {
var
w = document.documentElement ? document.documentElement.clientWidth: document.body.clientWidth,
r = 1255,
b = Element.extend(document.body),
classname = b.className;
if
(w < r) {
//當窗體的寬度小於1255的時候執行相應的操做
}
else
{
//當窗體的寬度大於1255的時候執行相應的操做
}
}
if
(window.addEventListener) {
window.addEventListener(
'resize'
,
function
() {
fn();
});
}
else
if
(window.attachEvent) {
window.attachEvent(
'onresize'
,
function
() {
fn();
});
}
fn();
})();
|
實現base64解碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
function
base64_decode(data) {
var
b64 =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
;
var
o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
dec =
""
,
tmp_arr = [];
if
(!data) {
return
data;
}
data +=
''
;
do
{
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
o1 = bits >> 16 & 0xff;
o2 = bits >> 8 & 0xff;
o3 = bits & 0xff;
if
(h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
}
else
if
(h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
}
else
{
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
}
while
( i < data . length );
dec = tmp_arr.join(
''
);
dec = utf8_decode(dec);
return
dec;
}
|
實現utf8解碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
function
utf8_decode(str_data) {
var
tmp_arr = [],
i = 0,
ac = 0,
c1 = 0,
c2 = 0,
c3 = 0;
str_data +=
''
;
while
(i < str_data.length) {
c1 = str_data.charCodeAt(i);
if
(c1 < 128) {
tmp_arr[ac++] = String.fromCharCode(c1);
i++;
}
else
if
(c1 > 191 && c1 < 224) {
c2 = str_data.charCodeAt(i + 1);
tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
i += 2;
}
else
{
c2 = str_data.charCodeAt(i + 1);
c3 = str_data.charCodeAt(i + 2);
tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return
tmp_arr.join(
''
);
}
|
獲取窗體可見範圍的寬與高
1
2
3
4
5
6
7
|
function
getViewSize() {
var
de = document.documentElement;
var
db = document.body;
var
viewW = de.clientWidth == 0 ? db.clientWidth: de.clientWidth;
var
viewH = de.clientHeight == 0 ? db.clientHeight: de.clientHeight;
return
Array(viewW, viewH);
}
|
斷鼠標是否移出事件
1
2
3
4
5
6
7
8
9
10
|
function
isMouseOut(e, handler) {
if
(e.type !==
'mouseout'
) {
return
false
;
}
var
reltg = e.relatedTarget ? e.relatedTarget: e.type ===
'mouseout'
? e.toElement: e.fromElement;
while
(reltg && reltg !== handler) {
reltg = reltg.parentNode;
}
return
(reltg !== handler);
}
|
半角轉換爲全角函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function
ToDBC(str) {
var
result =
''
;
for
(
var
i = 0; i < str.length; i++) {
code = str.charCodeAt(i);
if
(code >= 33 && code <= 126) {
result += String.fromCharCode(str.charCodeAt(i) + 65248);
}
else
if
(code == 32) {
result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32);
}
else
{
result += str.charAt(i);
}
}
return
result;
}
|
全角轉換爲半角函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function
ToCDB(str) {
var
result =
''
;
for
(
var
i = 0; i < str.length; i++) {
code = str.charCodeAt(i);
if
(code >= 65281 && code <= 65374) {
result += String.fromCharCode(str.charCodeAt(i) - 65248);
}
else
if
(code == 12288) {
result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
}
else
{
result += str.charAt(i);
}
}
return
result;
}
|