點擊此處輸入圖片描述
${}取值會給網站帶來許多麻煩,強烈建議使用<c:out>標簽取代${}取值。如果你沒意識到區別讓我們來一個例子,看看${}會給你帶來什么麻煩。
在表單中輸入了 【 ‘> 】的特字符
取值結果
從結果上可以看出EL表達式沒能再表單中正常顯示,可能很多讀者已經反應過來了,因為我們設置的name值中的【 '> 】會導致input框提前結束。以至于表單的結構被打亂了。而 標簽的取值卻沒有問題,我們打開瀏覽器源碼查看一下
瀏覽器源碼模式查看
原來 標簽轉義了輸出變量中會導致瀏覽器迷惑的字符,把這些有問題的字符轉化為HTML字符實體碼(character-entity code);這樣就能避免用戶在提交了一些有意無意為之的特殊字符時引起表單的錯誤。
這樣的錯誤到底有沒有人會犯呢?當然新人肯定有時候會不注意這個,我是說中小型網站。
這是在美食杰網站上發布菜譜時,在主料一欄中填入"> 保存后在打開的效果,當然咯人家是PHP做的沒有 我不會PHP關鍵不在語言,我只想說明一下這個問題嘛。
美食杰編輯界面截圖
如果這個網站大家覺得有點牽強的話,我還是找個用java寫的網站來說吧。這個是珍愛網,我在名字中輸入">后的結果。珍愛網應該是Java做的。
珍愛網資料編輯界面截圖
從這2個網站中我們不難發現其實還是有很多網站沒有注意這個細節的。所以小伙伴們快點檢查檢查你們公司的代碼是否存在這樣的問題把,有的話快點改了。
我這樣找漏洞不知道珍愛網和美食杰如果知道了會不會找我麻煩?、如果你們不喜歡聯系我,我給你們上馬賽克。
好吧言歸正傳,其實使用c:out 標簽不光是HTML轉義的問題能夠得到解決,這種字符轉換還能預防跨站腳本攻擊。如果不轉換特殊字符的話我可以在文本框中輸入
<script>window.location.href="xxx.xx.com"</script>
這樣用戶只要一打開這個頁面就會直接連接到其他網站,所以我們不得不防。
當然使用cout是不是能夠解決所有的問題,我覺得有點懸,還是要根據情況來做對應的處理,但是使用<c:out>總是比沒使用好嘛。不過<c:out>在使用的時候要注意一個問題,不是所有的地方都可以直接使用的。比如說要顯示html的地方,如果一篇文章的詳情,或者一個商品的詳細描述,這樣本來就是富文本的內容不能直接使用<c:out>會導致內容無法查看。
<c:out >標簽有一個可選屬性 escapeXml 這個屬性默認是true啟用轉義,你可以設置為false關閉它。
說了這么多如果你還是堅持使用${}來輸出變量值的話也不是沒有辦法解決這個問題,可以使用fn函數中的escapeXml方法來轉義字符,使用方式如下
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<input value="${fn:escapeXml(name) }" >
到底使用<c:out>還是使用fn:escapeXml()函數來轉化特殊字符,其實取決于你的個人喜好,我還是比較喜歡<c:out>標簽,相對而言在使用上簡單一點,也容易記住, 而且<c:out>標簽還有一個功能,就是在取值為null的情況下能夠指定默認值,這個是fn:escapeXml()函數所沒有的,提供默認值在某些情況下回帶來很多方便,這也是我選擇<c:out>的一個原因。
onkeypress 在用戶按下并放開任何字母數字鍵時發生。系統按鈕(例如,箭頭鍵和功能鍵)無法得到識別。[響應一個鍵] onkeyup 在用戶放開任何先前按下的鍵盤鍵時發生。 onkeydown 在用戶按下任何鍵盤鍵(包括系統按鈕,如箭頭鍵和功能鍵)時發生。[響應幾個鍵的組合]可以響應Ctrl、Alt、Shift等功能鍵和鍵的組合,而onkeypress不能 onfocusout 失去光標事件 onfocus 獲得光標事件 onabort 圖片下載被打斷時 onblur 元素失去焦點時 onclick 鼠標點擊 ondblclick 鼠標雙擊 onerror 加載文檔或圖片發生錯誤時 onmousedown 鼠標被按下時 onmousemove 鼠標被移動時 onmouseout 鼠標離開元素時 onmouseover 鼠標經過元素時 onmouseup 釋放鼠標按鍵時 onunload 用戶離開頁面時
100個原生JavaScript使用功能代碼片段
目錄
1.原生JavaScript實現字符串長度截取
2.原生JavaScript獲取域名主機
3.原生JavaScript清除空格
4.原生JavaScript替換全部
5.原生JavaScript轉義html標簽
6.原生JavaScript還原html標簽
7.原生JavaScript判斷是否為數字類型
8.原生JavaScript時間日期格式轉換
9.原生JavaScript設置cookie值
10.原生JavaScript獲取cookie值
11.原生JavaScript加入收藏夾
12.原生JavaScript設為首頁
13.原生JavaScript判斷IE6
14.原生JavaScript加載樣式文件
15.原生JavaScript返回腳本內容
16.原生JavaScript清除腳本內容
17.原生JavaScript動態加載腳本文件
18.原生JavaScript返回按ID檢索的元素對象
19.原生JavaScript返回瀏覽器版本內容
20.原生JavaScript元素顯示的通用方法
21.原生JavaScript中有insertBefore方法,可惜卻沒有insertAfter方法?用如函數實現
22.原生JavaScript中兼容瀏覽器綁定元素事件
23.原生JavaScript光標停在文字的后面,文本框獲得焦點時調用
24.原生JavaScript檢驗URL鏈接是否有效
25.原生JavaScript格式化CSS樣式代碼
26.原生JavaScript壓縮CSS樣式代碼
27.原生JavaScript獲取當前路徑
28.原生JavaScriptIP轉成整型
29.原生JavaScript整型解析為IP地址
30.原生JavaScript實現checkbox全選與全不選
31.原生JavaScript判斷是否移動設備
32.原生JavaScript判斷是否移動設備訪問
33.原生JavaScript判斷是否蘋果移動設備訪問
34.原生JavaScript判斷是否安卓移動設備訪問
35.原生JavaScript判斷是否Touch屏幕
36.原生JavaScript判斷是否在安卓上的谷歌瀏覽器
37.原生JavaScript判斷是否打開視窗
38.原生JavaScript獲取移動設備初始化大小
39.原生JavaScript獲取移動設備最大化大小
40.原生JavaScript獲取移動設備屏幕寬度
41.原生JavaScript完美判斷是否為網址
42.原生JavaScript根據樣式名稱檢索元素對象
43.原生JavaScript判斷是否以某個字符串開頭
44.原生JavaScript判斷是否以某個字符串結束
45.原生JavaScript返回IE瀏覽器的版本號
46.原生JavaScript獲取頁面高度
47.原生JavaScript獲取頁面scrollLeft
48.原生JavaScript獲取頁面可視寬度
49.原生JavaScript獲取頁面寬度
50.原生JavaScript獲取頁面scrollTop
51.原生JavaScript獲取頁面可視高度
52.原生JavaScript跨瀏覽器添加事件
53.原生JavaScript跨瀏覽器刪除事件
54.原生JavaScript去掉url前綴
55.原生JavaScript隨機數時間戳
56.原生JavaScript全角半角轉換,iCase: 0全到半,1半到全,其他不轉化
57.原生JavaScript確認是否鍵盤有效輸入值
58.原生JavaScript獲取網頁被卷去的位置
59.原生JavaScript另一種正則日期格式化函數+調用方法
60.原生JavaScript時間個性化輸出功能
61.原生JavaScript解決offsetX兼容性問題
62.原生JavaScript常用的正則表達式
63.原生JavaScript實現返回頂部的通用方法
64.原生JavaScript獲得URL中GET參數值
65.原生JavaScript實現全選通用方法
66.原生JavaScript實現全部取消選擇通用方法
67.原生JavaScript實現打開一個窗體通用方法
68.原生JavaScript判斷是否為客戶端設備
69.原生JavaScript獲取單選按鈕的值
70.原生JavaScript獲取復選框的值
71.原生JavaScript判斷是否為郵箱
72.原生JavaScript判斷是否有列表中的危險字符
73.原生JavaScript判斷字符串是否大于規定的長度
74.原生JavaScript判斷字符串是為網址不區分大小寫
75.原生JavaScript判斷字符串是否為小數
76.原生JavaScript判斷字符串是否為整數
77.原生JavaScript判斷字符串是否為浮點數
78.原生JavaScript判斷字符是否為A-Za-z英文字母
79.原生JavaScript判斷字符串是否郵政編碼
80.原生JavaScript判斷字符是否空NULL
81.原生JavaScript用正則表達式提取頁面代碼中所有網址
82.原生JavaScript用正則表達式清除相同的數組(低效率)
83.原生JavaScript用正則表達式清除相同的數組(高效率)
84.原生JavaScript用正則表達式按字母排序,對每行進行數組排序
85.原生JavaScript字符串反序
86.原生JavaScript用正則表達式清除html代碼中的腳本
87.原生JavaScript動態執行JavaScript腳本
88.原生JavaScript動態執行VBScript腳本
89.原生JavaScript實現金額大寫轉換函數
90.原生JavaScript常用的正則表達式大收集
91.原生JavaScript實現窗體改變事件resize的操作(兼容所以的瀏覽器)
92.原生JavaScript用正則清除空格分左右
93.原生JavaScript判斷變量是否空值
94.原生JavaScript實現base64解碼
95.原生JavaScript實現utf8解碼
96.原生JavaScript獲取窗體可見范圍的寬與高
97.原生JavaScript判斷IE版本號(既簡潔.又向后兼容!)
98.原生JavaScript獲取瀏覽器版本號
99.原生JavaScript半角轉換為全角函數
100.原生JavaScript全角轉換為半角函數
代碼片段
function cutstr(str, len) { var temp; var icount=0; var patrn=/[^\x00-\xff]/; // 匹配雙字節字符(包括漢字在內) var strren=""; 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; } } else { break; } } return strre + "..."; }
function getHost(url) { var host="null"; if (typeof url==undefined || url===null) { url=window.location.href; } var regex=/^\w+\:\/\/([^\/]*).*/; var match=url.match(regex); if (typeof match !=undefined && match !=null) { host=match[1]; } return host; }
String.prototype.trim=function() { var reExtraSpace=/^\s*(.*?)\s+$/; return this.replace(reExtraSpace, "$1"); }
String.prototype.replaceAll=function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); }
function HtmlEncode(text) { return text.replace(/&/g, '&') .replace(/\"/g, '"') .replace(/</g, '<') .replace(/>/g, '>'); }
function HtmlDecode(text) { return text.replace('&', /&/g) .replace('"', /\"/g) .replace('<', /</g) .replace('>', />/g); }
function isDigit(value) { var patrn=/^[0-9]*$/; if (patrn.exec(value)==null || value=="") { return false } else { return true } }
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 }
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;" }
function getCookie(name) { var arr=document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr !=null) return unescape(arr[2]); return null }
function AddFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sTitle) } catch(e) { try { window.sidebar.addPanel(sTitle, sURL, "") } catch(e) { alert("加入收藏失敗,請使用Ctrl+D進行添加") } } }
function setHomepage() { if (document.all) { document.body.style.behavior='url(#default#homepage)'; document.body.setHomePage('http://***'); } 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://***') } }
var ua=navigator.userAgent.toLowerCase(); var isIE6=ua.indexOf("msie 6") > -1; if (isIE6) { try { document.execCommand("BackgroundImageCache", false, true) } catch(e) {} }
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) } }
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; }
function stripscript(s) { return s.replace(/<script.*?>.*?<\/script>/ig, ''); }
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) {} }
function $(id) { return !id ? null : document.getElementById(id); }
function browserVersion(types) { var other=1; for(i in types) { var v=types[i] ? types[i] : i; if(USERAGENT.indexOf(v) !=-1) { var re=new RegExp(v + '(\\/|\\s)([\\d\\.]+)', 'ig'); var matches=re.exec(USERAGENT); var ver=matches !=null ? matches[2] : 0; other=ver !==0 && v !='mozilla' ? 0 : other; }else { var ver=0; } eval('BROWSER.' + i + '=ver'); } BROWSER.other=other; }
function $(id) { return !id ? null : document.getElementById(id); } function display(id) { var obj=$(id); if(obj.style.visibility) { obj.style.visibility=obj.style.visibility=='visible' ? 'hidden' : 'visible'; } else { obj.style.display=obj.style.display=='' ? 'none' : ''; } }
function insertAfter(newChild, refChild) { var parElem=refChild.parentNode; if(parElem.lastChild==refChild){ refChild.appendChild(newChild); }else{ parElem.insertBefore(newChild, refChild.nextSibling); } }
function addEventSamp(obj, evt, fn){ if (obj.addEventListener) { obj.addEventListener(evt, fn, false); }else if(obj.attachEvent){ obj.attachEvent('on' + evt, fn); } }
function focusLast(){ var e=event.srcElement; var r=e.createTextRange(); r.moveStart('character',e.value.length); r.collapse(true); r.select(); }
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; } } }
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; }
function yasuoCss (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]; }
var currentPageUrl=""; if (typeof this.href===undefined) { currentPageUrl=document.location.toString().toLowerCase(); } else { currentPageUrl=this.href.toString().toLowerCase(); }
function _ip2int(ip){ var num=0; ip=ip.split("."); num=Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]); num=num >>> 0; return num; }
function _int2iP(num){ var str; var tt=new Array(); tt[0]=(num >>> 24) >>> 0; tt[1]=((num << 8) >>> 24) >>> 0; tt[2]=(num << 16) >>> 24; tt[3]=(num << 24) >>> 24; str=String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]); return str; }
function checkAll() { var selectall=document.getElementById("selectall"); var allbox=document.getElementsByName("allbox"); if (selectall.checked) { for (var i=0; i < allbox.length; i++) { allbox[i].checked=true; } } else { for (var i=0; i < allbox.length; i++) { allbox[i].checked=false; } } }
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; }
function isMobileUserAgent() { return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())); }
function isAppleMobileDevice() { return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase())); }
function isAndroidMobileDevice(){ return (/android/i.test(navigator.userAgent.toLowerCase())); }
function isTouchScreen() { return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); }
function isNewChromeOnAndroid(){ if(this.isAndroidMobileDevice()){ var userAgent=navigator.userAgent.toLowerCase(); if((/chrome/i.test(userAgent))){ var parts=userAgent.split('chrome/'); var fullVersionString=parts[1].split(" ")[0]; var versionString=fullVersionString.split('.')[0]; var version=parseInt(versionString); if(version >=27){ return true; } } } return false; }
function isViewportOpen() { return !!document.getElementById('wixMobileViewport'); }
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; }
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; } }
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; }
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; } }
function getElementsByClassName(name) { var tags=document.getElementsByTagName('*') || document.all; var els=[]; for (var i=0; i < tags.length; i++) { if (tags[i].className) { var cs=tags[i].className.split(' '); for (var j=0; j < cs.length; j++) { if (name==cs[j]) { els.push(tags[i]); break; } } } } return els; }
String.prototype.startWith=function (s) { return this.indexOf(s)==0; }
String.prototype.endWith=function (s) { var d=this.length - s.length; return (d >=0 && this.lastIndexOf(s)==d); }
function getIE(){ if (window.ActiveXObject){ var v=navigator.userAgent.match(/MSIE ([^;]+)/)[1]; return parseFloat(v.substring(0, v.indexOf("."))); } return false; }
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); }
function getPageScrollLeft(){ var a=document; return a.documentElement.scrollLeft || a.body.scrollLeft; }
function getPageViewWidth(){ var d=document, a=d.compatMode=="BackCompat" ? d.body : d.documentElement; return a.clientWidth; // 可視寬度為clientWidth }
// 考慮帶滾動條的全部寬度 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); }
function getPageScrollTop(){ var a=document; return a.documentElement.scrollTop || a.body.scrollTop; }
function getPageViewHeight() { var d=document, a=d.compatMode=="BackCompat" ? d.body : d.documentElement; return a.clientHeight; }
function addEvt(oTarget, sEvtType, fnHandle) { if(!oTarget) {return;} if(oTarget.addEventListener) { oTarget.addEventListener(sEvtType, fnHandle, false); } else if(oTarget.attachEvent) { oTarget.attachEvent("on" + sEvtType, fnHandle); } else { oTarget["on" + sEvtType]=fnHandle; } }
function delEvt(oTarget, sEvtType, fnHandle){ if(!oTarget) {return;} if(oTarget.addEventListener) { oTarget.addEventListener(sEvtType,fnHandle,false); } else if(oTarget.attachEvent) { oTarget.attachEvent("on" + sEvtType,fnHandle); } else { oTarget["on" + sEvtType]=fnHandle; } }
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; }
function uniqueId() { var a=Math.random, b=parseInt; return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a()); }
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(""); }
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; }
function getScrollXY() { return document.body.scrollTop ? { x: document.body.scrollLeft, y: document.body.scrollTop }: { x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop } }
Date.prototype.format=function(format) { // author: meizz 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、< 60s, 顯示為“剛剛” 2、>=1min && < 60 min, 顯示與當前時間差“XX分鐘前” 3、>=60min && < 1day, 顯示與當前時間差“今天 XX:XX” 4、>=1day && < 1year, 顯示日期“XX月XX日 XX:XX” 5、>=1year, 顯示具體日期“XXXX年XX月XX日 XX:XX” */ function timeFormat(time){ var date=new Date(time) , curDate=new Date() , year=date.getFullYear() , month=date.getMonth() + 1 , 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/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; }
//正整數 /^[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*)?$/; //年/月/日(年-月-日、年.月.日) /^(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*?)[^>]*>.*?|< .*? />;
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');
// 用法:如果地址是 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]) { var GETs=querystr[1].split("&"), GET=new Array(); for(i=0; i < GETs.length; i++){ tmp_arr=GETs[i].split("="); key=tmp_arr[0]; GET[key]=tmp_arr[1]; } } return querystr[1]; }
function checkall(form, prefix, checkall) { var checkall=checkall ? checkall : 'chkall'; for(var i=0; i < form.elements.length; i++) { var e=form.elements[i]; if(e.type=="checkbox"){ e.checked=form.elements[checkall].checked; } } }
function uncheckAll(form) { for (var i=0; i < form.elements.length; i++){ var e=form.elements[i]; if (e.name !='chkall') e.checked=!e.checked; } }
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(); } }
function client(o){ var b=navigator.userAgent.toLowerCase(); var t=false; if (o=='isOP'){ t=b.indexOf('opera') > -1; } if (o=='isIE'){ t=b.indexOf('msie') > -1; } if (o=='isFF'){ t=b.indexOf('firefox') > -1; } return t; }
function get_radio_value(field){ if(field && field.length){ for(var i=0; i < field.length; i++){ if(field[i].checked){ return field[i].value; } } }else { return; } }
function get_checkbox_value(field) { if(field && field.length){ for(var i=0; i < field.length; i++){ if(field[i].checked && !field[i].disabled){ return field[i].value; } } } else { return; } }
function isEmail(str){ var re=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; if (re.test(str) !=true) { return false; }else{ return true; } }
function isValidReg(chars){ var re=/<|>|\[|\]|\{|\}|『|』|※||||§|||||||□||㊣|﹋|⊕|⊙|〒|ㄅ|ㄆ|ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ|■|▄|▆|\*|@|#|\^|\\/; if (re.test( chars)==true) { return false; }else{ return true; } }
function isValidLength(chars, len) { if (chars.length < len) { return false; } return true; }
function isValidURL( chars ) { var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(\S+\.\S+)$/; if (!isNULL(chars)) { chars=jsTrim(chars); if (chars.match(re)==null) return false; else return true; } return false; }
function isValidDecimal( chars ) { var re=/^\d*\.?\d{1,2}$/; if (chars.match(re)==null) return false; else return true; }
function isNumber(chars) { var re=/^\d*$/; if (chars.match(re)==null) return false; else return true; }
function isFloat(str) { for(i=0;i<str.length;i++) { if((str.charAt(i)<"0" || str.charAt(i)>"9")&& str.charAt(i) !='.') { return false; } } return true; }
function isLetters(str) { var re=/^[A-Za-z]+$/; if (str.match(re)==null) return false; else return true; }
function isValidPost( chars ) { var re=/^\d{6}$/; if (chars.match(re)==null) return false; else return true; }
function isNULL( chars ) { if (chars==null) return true; if (jsTrim(chars).length==0) return true; return false; }
var aa=document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,""); alert(aa);
Array.prototype.unique=function() { return this.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse(); }
String.prototype.unique=function() { var x=this.split(/[\r\n]+/); var y=''; for(var i=0; i < x.length; i++){ if(!new RegExp("^"+x[i].replace(/([^\w])/ig,"\\$1")+"$","igm").test(y)) { y +=x[i]+"\r\n"; } } return y; }
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; }
function IsReverse(text) { return text.split('').reverse().join(''); }
function clear_script() { K1.valu e=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,""); }
function javascript(){ try{ eval(K1.value); }catch(e){ alert(e.message); } }
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); } }
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[i]=temp[i]; } return value; }
匹配中文字符的正則表達式: [\u4e00-\u9fa5] 匹配雙字節字符(包括漢字在內):[^\x00-\xff] 匹配空行的正則表達式:\n[\s| ]*\r 匹配 HTML 標記的正則表達式:<(.*)>.*<\/\1>|<(.*) \/> 匹配首尾空格的正則表達式:(^\s*)|(\s*$) 匹配 IP 地址的正則表達式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g 匹配 Email 地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配網址 URL 的正則表達式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? sql 語句:^(select|drop|delete|create|update|insert).*$ 非負整數:^\d+$ 正整數:^[0-9]*[1-9][0-9]*$ 非正整數:^((-\d+)|(0+))$ 負整數:^-[0-9]*[1-9][0-9]*$ 整數:^-?\d+$ 非負浮點數:^\d+(\.\d+)?$ 正浮點數:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 非正浮點數:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 英文字符串:^[A-Za-z]+$ 英文大寫串:^[A-Z]+$ 英文小寫串:^[a-z]+$ 英文字符數字串:^[A-Za-z0-9]+$ 英數字加下劃線串:^\w+$ E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$ 郵政編碼:^[1-9]\d{5}$ 電話號碼:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$ 手機號碼:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 雙字節字符(包括漢字在內):^\x00-\xff 匹配首尾空格:(^\s*)|(\s*$) 匹配 HTML 標記:<(.*)>.*<\/\1>|<(.*) \/> 匹配空行:\n[\s| ]*\r 提取信息中的網絡鏈接:(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} 提取信息中的中國固定電話號碼:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 提取信息中的中國電話號碼(包括移動和固定電話):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 提取信息中的中國郵政編碼:[1-9]{1}(\d+){5} 提取信息中的浮點數(即小數):(-?\d*)\.?\d+ 提取信息中的任何數字 :(-?\d*)(\.\d+)? IP:(\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]+$
(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(); })();
function ltrim(s){ return s.replace( /^(\s*| *)/, ""); } function rtrim(s){ return s.replace( /(\s*| *)$/, ""); } function trim(s){ return ltrim(rtrim(s)); }
/** * 判斷變量是否空值 * undefined, null, '', false, 0, [], {} 均返回true,否則返回false */ function empty(v){ switch (typeof v){ case 'undefined' : return true; case 'string' : if(trim(v).length==0) return true; break; case 'boolean' : if(!v) return true; break; case 'number' : if(0===v) return true; break; case 'object' : if(null===v) return true; if(undefined !==v.length && v.length==0) return true; for(var k in v){return false;} return true; break; } return false; }
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; }
95, 原生JavaScript實現utf8解碼
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(''); }
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); }
var _IE=(function(){ var v=3, div=document.createElement('div'), all=div.getElementsByTagName('i'); while ( div.innerHTML='<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0] ); return v > 4 ? v : false ; }());
function browserVersion(types) { var other=1; for (i in types) { var v=types[i] ? types[i] : i; if (USERAGENT.indexOf(v) !=-1) { var re=new RegExp(v + '(\\/|\\s|:)([\\d\\.]+)', 'ig'); var matches=re.exec(USERAGENT); var ver=matches !=null ? matches[2] : 0; other=ver !==0 && v !='mozilla' ? 0 : other; } else { var ver=0; } eval('BROWSER.' + i + '=ver'); } BROWSER.other=other; }
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; }
蜜蜂采集器的采集數據,有幾種方法導出到PDF文件。一種是數據編輯窗口的“導出當前頁記錄”,一種是“發布到文件”中添加文件發布模板。此外,也可以使用“發布到插件”的方式,通過插件發布到PDF文件。此前提到的,導出到Excel文件的功能,也可以使用“發布到插件”的方式實現。
打開任意采集規則的“數據編輯”窗口,點擊“菜單”——“全部”——“導出當前頁記錄”,即可導出為csv格式文件,即Excel表格文件。再使用Excel打開,另存為PDF文件。
這種方式只能導出當前頁記錄,可以通過修改每頁的記錄數,從而增加導出記錄的數量。
推薦使用“發布到文件”方式來實現導出到PDF文件的功能。
打開主菜單“發布”——“發布到文件”管理器。添加一個文件發布配置,其中的“輸出文件名”為[任務名].[文件擴展名],模板文件路徑自定義并且后綴為.html。標簽轉義設置為HTML轉義。
發布到文件
系統自帶模板中,僅支持輸出[標簽:標題]、[標簽:內容]等幾個固定標簽。因此這里使用自定義模板方式。即,模板文件路徑使用自定義路徑,再點擊“自動生成模板文件”,選中相應的采集規則,選中需要發布的標簽,點擊“確定”。至此,生成了文件發布模板。
自動生成模板文件
編輯采集任務規則時,內容發布通道中添加一個“發布到文件”通道,并選中剛剛添加的文件發布配置。至此,完成了文件發布的設置。
“發布到文件”通道
任務發布時,系統就會自動將數據發布到HTML文件中了。使用Word軟件、網頁瀏覽器等方式打開這個HTML文件,然后另存為PDF文件,即可。也可以發布為Excel格式,然后使用Excel打開,再另存為PDF文件。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。