//by zhanyi function uParse(selector, opt) { var ie = !!window.ActiveXObject, cssRule = ie ? function (key, style, doc) { var indexList, index; doc = doc || document; if (doc.indexList) { indexList = doc.indexList; } else { indexList = doc.indexList = {}; } var sheetStyle; if (!indexList[key]) { if (style === undefined) { return '' } sheetStyle = doc.createStyleSheet('', index = doc.styleSheets.length); indexList[key] = index; } else { sheetStyle = doc.styleSheets[indexList[key]]; } if (style === undefined) { return sheetStyle.cssText } sheetStyle.cssText = sheetStyle.cssText + '\n' + (style || '') } : function (key, style, doc) { doc = doc || document; var head = doc.getElementsByTagName('head')[0], node; if (!(node = doc.getElementById(key))) { if (style === undefined) { return '' } node = doc.createElement('style'); node.id = key; head.appendChild(node) } if (style === undefined) { return node.innerHTML } if (style !== '') { node.innerHTML = node.innerHTML + '\n' + style; } else { head.removeChild(node) } }, domReady = function (onready) { var doc = window.document; if (doc.readyState === "complete") { onready(); } else { if (ie) { (function () { if (doc.isReady) return; try { doc.documentElement.doScroll("left"); } catch (error) { setTimeout(arguments.callee, 0); return; } onready(); })(); window.attachEvent('onload', function () { onready() }); } else { doc.addEventListener("DOMContentLoaded", function () { doc.removeEventListener("DOMContentLoaded", arguments.callee, false); onready(); }, false); window.addEventListener('load', function () { onready() }, false); } } }, _each = function (obj, iterator, context) { if (obj == null) return; if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) { if (iterator.call(context, obj[i], i, obj) === false) return false; } } else { for (var key in obj) { if (obj.hasOwnProperty(key)) { if (iterator.call(context, obj[key], key, obj) === false) return false; } } } }, inArray = function (arr, item) { var index = -1; _each(arr, function (v, i) { if (v === item) { index = i; return false; } }); return index; }, pushItem = function (arr, item) { if (inArray(arr, item) == -1) { arr.push(item) } }, loadFile = function () { var tmpList = []; function getItem(doc, obj) { try { for (var i = 0, ci; ci = tmpList[i++];) { if (ci.doc === doc && ci.url == (obj.src || obj.href)) { return ci; } } } catch (e) { return null; } } return function (doc, obj, fn) { var item = getItem(doc, obj); if (item) { if (item.ready) { fn && fn(); } else { item.funs.push(fn) } return; } tmpList.push({ doc: doc, url: obj.src || obj.href, funs: [fn] }); if (!doc.body) { var html = []; for (var p in obj) { if (p == 'tag')continue; html.push(p + '="' + obj[p] + '"') } doc.write('<' + obj.tag + ' ' + html.join(' ') + ' >'); return; } if (obj.id && doc.getElementById(obj.id)) { return; } var element = doc.createElement(obj.tag); delete obj.tag; for (var p in obj) { element.setAttribute(p, obj[p]); } element.onload = element.onreadystatechange = function () { if (!this.readyState || /loaded|complete/.test(this.readyState)) { item = getItem(doc, obj); if (item.funs.length > 0) { item.ready = 1; for (var fi; fi = item.funs.pop();) { fi(); } } element.onload = element.onreadystatechange = null; } }; element.onerror = function () { throw Error('The load ' + (obj.href || obj.src) + ' fails,check the url') }; doc.getElementsByTagName("head")[0].appendChild(element); } }(); var defaultOption = { liiconpath: 'http://bs.baidu.com/listicon/', listDefaultPaddingLeft: '20', 'highlightJsUrl': '', 'highlightCssUrl': '', customRule: function () { } }; if (opt) { for (var p in opt) { defaultOption[p] = opt[p] } } domReady(function () { var contents; if (document.querySelectorAll) { contents = document.querySelectorAll(selector) } else { if (/^#/.test(selector)) { contents = [document.getElementById(selector.replace(/^#/, ''))] } else if (/^\./.test(selector)) { var contents = []; _each(document.getElementsByTagName('*'), function (node) { if (node.className && new RegExp('\\b' + selector.replace(/^\./, '') + '\\b', 'i').test(node.className)) { contents.push(node) } }) } else { contents = document.getElementsByTagName(selector) } } _each(contents, function (content) { if (content.tagName.toLowerCase() == 'textarea') { var tmpNode = document.createElement('div'); if (/^#/.test(selector)) { tmpNode.id = selector.replace(/^#/, '') } else if (/^\./.test(selector)) { tmpNode.className = selector.replace(/^\./, '') } content.parentNode.insertBefore(tmpNode, content); tmpNode.innerHTML = content.value; content.parentNode.removeChild(content); content = tmpNode; } function fillNode(nodes) { _each(nodes, function (node) { if (!node.firstChild) { node.innerHTML = ' ' } }) } function checkList(nodes) { var customCss = [], customStyle = { 'cn': 'cn-1-', 'cn1': 'cn-2-', 'cn2': 'cn-3-', 'num': 'num-1-', 'num1': 'num-2-', 'num2': 'num-3-', 'dash': 'dash', 'dot': 'dot' }; _each(nodes, function (list) { if (list.className && /custom_/i.test(list.className)) { var listStyle = list.className.match(/custom_(\w+)/)[1]; if (listStyle == 'dash' || listStyle == 'dot') { pushItem(customCss, selector + ' li.list-' + customStyle[listStyle] + '{background-image:url(' + defaultOption.liiconpath + customStyle[listStyle] + '.gif)}'); pushItem(customCss, selector + ' ul.custom_' + listStyle + '{list-style:none;} ' + selector + ' ul.custom_' + listStyle + ' li{background-position:0 3px;background-repeat:no-repeat}'); } else { var index = 1; _each(list.childNodes, function (li) { if (li.tagName == 'LI') { pushItem(customCss, selector + ' li.list-' + customStyle[listStyle] + index + '{background-image:url(' + defaultOption.liiconpath + 'list-' + customStyle[listStyle] + index + '.gif)}'); index++; } }); pushItem(customCss, selector + ' ol.custom_' + listStyle + '{list-style:none;}' + selector + ' ol.custom_' + listStyle + ' li{background-position:0 3px;background-repeat:no-repeat}'); } switch (listStyle) { case 'cn': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-1{padding-left:25px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-2{padding-left:40px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-3{padding-left:55px}'); break; case 'cn1': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-1{padding-left:30px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-2{padding-left:40px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-3{padding-left:55px}'); break; case 'cn2': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-1{padding-left:40px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-2{padding-left:55px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-3{padding-left:68px}'); break; case 'num': case 'num1': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-1{padding-left:25px}'); break; case 'num2': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-1{padding-left:35px}'); pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft-2{padding-left:40px}'); break; case 'dash': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft{padding-left:35px}'); break; case 'dot': pushItem(customCss, selector + ' li.list-' + listStyle + '-paddingleft{padding-left:20px}'); } } }); customCss.push(selector + ' .list-paddingleft-1{padding-left:0}'); customCss.push(selector + ' .list-paddingleft-2{padding-left:' + defaultOption.listDefaultPaddingLeft + 'px}'); customCss.push(selector + ' .list-paddingleft-3{padding-left:' + defaultOption.listDefaultPaddingLeft * 2 + 'px}'); cssRule('list', selector + ' ol,' + selector + ' ul{margin:0;padding:0;}li{clear:both;}' + customCss.join('\n'), document); } var needParseTagName = { 'table': function () { cssRule('table', selector + ' table.noBorderTable td,' + selector + ' table.noBorderTable th,' + selector + ' table.noBorderTable caption{border:1px dashed #ddd !important}' + selector + ' table{margin-bottom:10px;border-collapse:collapse;display:table;}' + selector + ' td,' + selector + ' th{ background:white; padding: 5px 10px;border: 1px solid #DDD;}' + selector + ' caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' + selector + ' th{border-top:2px solid #BBB;background:#F7F7F7;}' + selector + ' td p{margin:0;padding:0;}', document); }, 'ol': checkList, 'ul': checkList, 'pre': function (nodes) { if (typeof XRegExp == "undefined") { loadFile(document, { id: "syntaxhighlighter_js", src: defaultOption.highlightJsUrl, tag: "script", type: "text/javascript", defer: "defer" }, function () { _each(nodes, function (pi) { if (pi && /brush/i.test(pi.className)) { SyntaxHighlighter.highlight(pi); // var tables = document.getElementsByTagName('table'); // for(var t= 0,ti;ti=tables[t++];){ // if(/SyntaxHighlighter/i.test(ti.className)){ // var tds = ti.getElementsByTagName('td'); // for(var i=0,li,ri;li=tds[0].childNodes[i];i++){ // ri = tds[1].firstChild.childNodes[i]; // if(ri){ // ri.style.height = li.style.height = ri.offsetHeight + 'px'; // } // } // } // } } }); }); } if (!document.getElementById("syntaxhighlighter_css")) { loadFile(document, { id: "syntaxhighlighter_css", tag: "link", rel: "stylesheet", type: "text/css", href: defaultOption.highlightCssUrl }); } }, 'td': fillNode, 'th': fillNode, 'caption': fillNode }; for (var tag in needParseTagName) { var nodes = content.getElementsByTagName(tag); if (nodes.length) { needParseTagName[tag](nodes) } } defaultOption.customRule(content); }); }) }