知识要求:1:熟悉dom结构层次(如childNodes,nodeType,parent,children)等。

2:熟悉jq对象转换js 对象,反之 毕竟不是专业js人。借助第3方框架。其实jq也是js封装的,所以请不要侮辱jq。

3:递归的使用(http://www.iteye.com/job/topic/1126012) iteye  深圳7k难找写递归的人 不知道大侠你们是怎么认为的。

4:学会调试js。工具 谷歌或者火狐 ie个人不习惯.

第1文本编辑器。http://www.cnblogs.com/rubylouvre/archive/2009/08/02/1537022.html(博客园司徒正美 听一个朋友说他是国内知名js高手具体也不清楚!)

最后我修改了下变成这个样子!

需求:

文本框输入文字,编辑 如果是颜色用\F,字体用\C,大小用\S, 举个例子:

|\F2,,\C1,,w||\F1,,博客园||  首先\F是字体的意思 ;\C是颜色 ;\S字体大小 里面的数字是具体属性。如颜色有红色,绿色 ;字体有12px ,14px ,20px (没有默认添加属性 这些都是自定义的),合起来的意思就是 "w"字体是宋体 颜色是红色 字体大小默认12px。同理博客园字体为宋体.

为了形象截下图。

还是直接上代码吧:

   <script type="text/javascript">
var fontName = {
ht: "黑体",
kt: "楷体",
yt: "幼圆",
st: "宋体"
};
var colorOhterHtml = {
red: "#ff0000",
lanSe: "#0000ff",
hs: "#ffff00",
ls: "#008000",
bs: "#ffffff",
qs: "#6a5acd",
Black: "black"
};
var colorIEHtml = {
red: "red",
green: "green",
yellow: "yellow",
blue: "blue",
white: "white",
Black: "#000000"
}; $(function () {
var content = $("#content"); new RichTextEditor({
id: 'editor',
textarea_id: 'textarea'
}); $("#btnValue").click(function () {
var sEditValue = $("#RTE_iframe").contents().find("body").html().toLowerCase();
if (sEditValue == "") {
alert("空");
return;
}
var txtDom = "<font><font><font color='black' face='宋体' size='1'>";
txtDom += sEditValue;
txtDom += "</font></font></font>"
$("#Div1").html("").append(txtDom);
$("#div2").html("").append(txtDom);
var dom = $("#Div1").children(); getTextNode($(dom)[0]);
var textValue = getChildDom($(dom), 0);
alert(textValue);
});
//jquery结束
}); function fontCode(font) {
var sCode = "";
switch (font) {
case fontName.st:
sCode += "\\F0,,";
break;
case fontName.ht:
sCode += "\\F1,,";
break;
case fontName.kt:
sCode += "\\F2,,";
break;
case fontName.yt:
sCode += "\\F3,,";
break;
}
return sCode;
} function colorCode(color) {
var sCode = "";
switch (color) {
case colorOhterHtml.Black:
case colorIEHtml.Black:
sCode += "\\C0,,";
break;
case colorOhterHtml.red:
case colorIEHtml.red:
sCode += "\\C1,,";
break;
case colorOhterHtml.ls:
case colorIEHtml.blue:
sCode += "\\C2,,";
break;
case colorOhterHtml.hs:
case colorIEHtml.yellow:
sCode += "\\C3,,";
break;
case colorOhterHtml.qs:
case colorIEHtml.blue:
sCode += "\\C6,,";
break;
case colorOhterHtml.ls:
case colorIEHtml.green:
sCode += "\\C4,,";
break;
case colorOhterHtml.bs:
case colorIEHtml.white:
sCode += "\\C7,,";
break;
}
return sCode;
} function sizeCode(size) {
var sCode = "";
switch (size) {
case "1":
sCode += "\\S0,,";
break;
case "2":
sCode += "\\S1,,";
break;
case "3":
sCode += "\\S2,,";
break;
case "4":
sCode += "\\S3,,";
break;
case "5":
sCode += "\\S4,,";
break;
case "6":
sCode += "\\S5,,";
break;
case "7":
sCode += "\\S6,,";
break;
case "8":
sCode += "\\S7,,";
break;
}
return sCode;
} function getChildDom(dom) {
var lastCode = "";
for (var i = 0; i < dom.length; i++) {
if ($(dom[i]).children().length > 0) {
var baseDomObj = $(dom[i]);
var childText = getChildDom(baseDomObj.children());
if (!baseDomObj.is('font')) {
continue;
}
var baseText = baseDomObj.html();
baseDomObj.replaceWith("|?" + baseText + "|?");
lastCode += baseText;
baseText = "|?" + baseText + "|?";
} else {
var childDomObj = $(dom[i]);
if (!childDomObj.is('font')) {
continue;
}
var childrenText = childDomObj.html();
childrenText = "|?" + childrenText + "|?";
childDomObj.replaceWith(childrenText);
}
}
return lastCode;
} function getColorVal(dom) {
if ($(dom).parent('font')[0] != null && typeof ($(dom).parent('font')[0]) != 'undefined') {
var color = $($(dom).parent('font')[0]).attr("color");
if (typeof (color) == "undefined") {
var colVal = getColorVal($(dom).parent('font')[0]);
if (typeof (colVal) == "undefined") {
return colVal;
}
} else {
return color;
}
}
} function getFontVal(dom) {
if ($(dom).parent('font')[0] != null && typeof ($(dom).parent('font')[0]) != 'undefined') {
var font = $($(dom).parent('font')[0]).attr("face");
if (typeof (font) == "undefined") {
var fontVal = getFontVal($(dom).parent('font')[0]);
if (typeof (fontVal) == "undefined") {
return fontVal;
}
} else {
return font;
}
}
} function getSizeVal(dom) {
if ($(dom).parent('font')[0] != null && typeof ($(dom).parent('font')[0]) != 'undefined') {
var size = $($(dom).parent('font')[0]).attr("size");
if (typeof (size) == "undefined") {
var sizeVal = getSizeVal($(dom).parent('font')[0]);
if (typeof (sizeVal) == "undefined") {
return sizeVal;
}
} else {
return size;
}
}
} function getTextNode(dom) {
var oElement = dom.childNodes;
for (var i = 0; i < oElement.length; i++) {
if (oElement[i].nodeType == 3 && typeof (oElement[i]) != "undefined") {
if (oElement[i].nodeType == 3) {
var color = getParentNodeColor(oElement[i]);
var size = getParentNodeSize(oElement[i]);
var face = getParentNodeFace(oElement[i]);
var colorCd = colorCode(color);
var sizeCd = sizeCode(size);
var faceCd = fontCode(face);
$(oElement[i]).replaceWith(colorCd + sizeCd + faceCd + oElement[i].nodeValue);
}
} else {
getTextNode(oElement[i]);
}
}
} function getParentNodeColor(txtNode) {
if (typeof (txtNode.parentNode) != "undefined" && txtNode.parentNode.nodeType == 1) {
var color = getColorVal(txtNode);
if (color != '') {
return color;
} else {
color = getParentNodeColor(txtNode.parentNode);
}
} else {
color = getParentNodeColor(txtNode.parentNode);
}
return color;
} function getParentNodeSize(txtNode) {
if (typeof (txtNode.parentNode) != "undefined" && txtNode.parentNode.nodeType == 1) {
var size = getSizeVal(txtNode);
if (size != '') {
return size;
} else {
size = getParentNodeSize(txtNode.parentNode);
}
} else {
size = getParentNodeSize(txtNode.parentNode);
}
return size;
} function getParentNodeFace(txtNode) {
if (typeof (txtNode.parentNode) != "undefined" && txtNode.parentNode.nodeType == 1) {
var face = getFontVal(txtNode);
if (face != '') {
return face;
} else {
face = getParentNodeFace(txtNode.parentNode);
}
} else {
face = getParentNodeFace(txtNode.parentNode);
}
return face;
} function delHtmlTag(str) {
return str.replace(/<[^>]+>/g, "");
}
</script>

html:

<html>
<head>
<script src="jquery-1.3.1.js" type="text/javascript"></script>
<script src="textEdit.js" type="text/javascript"></script>
<style type="text/css">
#textarea
{
width: 378px;
height: 97px;
background: #F2F1D7;
}
</style>
<title>富文本编辑器</title>
</head>
<body>
<form action="#">
<textarea id="textarea" wrap="on"></textarea>
<br />
<textarea id="tsp" wrap="on" style="width: 626px; height: 200px;"></textarea>
<input type="button" id="btnValue" value="获取值" />
<div id="content">
</div>
<div id="Div1">
</div>
<div id="div2">
</div>
</form>
</body>
</html>
textEdit.js代码:(注)修改博客园司徒的
      var addSheet = function () {
var doc, cssCode;
if (arguments.length == 1) {
doc = document;
cssCode = arguments[0];
} else if (arguments.length == 2) {
doc = arguments[0];
cssCode = arguments[1];
} else {
alert("addSheet函数最多接受两个参数!");
}
var headElement = doc.getElementsByTagName("head")[0];
var styleElements = headElement.getElementsByTagName("style");
if (styleElements.length == 0) {/*如果不存在style元素则创建*/
if (! +"\v1") { //ie
doc.createStyleSheet();
} else {
var tempStyleElement = doc.createElement('style'); //w3c
tempStyleElement.setAttribute("type", "text/css");
headElement.appendChild(tempStyleElement);
}
}
var styleElement = styleElements[0];
var media = styleElement.getAttribute("media");
if (media != null && !/screen/.test(media.toLowerCase())) {
styleElement.setAttribute("media", "screen");
}
if (! +"\v1") { //ie
styleElement.styleSheet.cssText += cssCode;
} else if (/a/[-1] == 'a') {
styleElement.innerHTML += cssCode; //火狐支持直接innerHTML添加样式表字串
} else {
styleElement.appendChild(doc.createTextNode(cssCode))
}
}
var Class = {
create: function () {
return function () {
this.initialize.apply(this, arguments);
}
}
}
var extend = function (destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
var RichTextEditor = Class.create(); //我们的富文本编辑器类
RichTextEditor.prototype = {
initialize: function (options) {
this.setOptions(options);
this.drawEditor(this.options.textarea_id);
},
setOptions: function (options) {
this.options = { //这里集中设置默认属性
id: 'jeditor_' + new Date().getTime(),
textarea_id: null//用于textarea的ID,也就是我们的必选项
}
extend(this.options, options || {}); //这里是用来重写默认属性
},
ID: function (id) { return document.getElementById(id) }, //getElementById的快捷方式
TN: function (tn) { return document.getElementsByTagName(tn) }, //getElementsByTagName的快捷方式
CE: function (s) { return document.createElement(s) }, //createElement的快捷方式
fontPickerHtml: function (type, array) {
var builder = [];
for (var i = 0, l = array.length; i < l; i++) {
builder.push('<a class="aFont" unselectable="on" style="');
if (type == 'fontname') {
builder.push('font-family');
builder.push(':');
builder.push(array[i]); /*呈现一行(一行就是一种字体)*/
builder.push(';" href="javascript:void(0)">');
builder.push(array[i]);
} else if (type == 'fontsize') {
/*呈现一行(一行就是一种字号)*/
builder.push('font-size');
//builder.push(':');
//builder.push(array[i][1]);如果加这个下面一句前面要加;builder.push(';" sizevalue="');
builder.push('" sizevalue="');
builder.push(array[i][0]);
builder.push('" href="javascript:void(0)">');
builder.push(array[i][2]);
}
builder.push("</a>");
}
return builder.join('');
},
fontClorHtml: function (type, array) {
var builder = [];
var sText;
for (var i = 0, l = array.length; i < l; i++) {
builder.push('<a class="aFontColor" unselectable="on" style="');
if (type == 'forecolor') {
builder.push('color');
builder.push(':');
builder.push(array[i]);
builder.push(';" href="javascript:void(0)">');
builder.push(array[i]);
}
builder.push("</a>");
}
return builder.join('');
},
addEvent: function (el, type, fn) {
if (! +"\v1") {
el['e' + type + fn] = fn;
el.attachEvent('on' + type, function () {
el['e' + type + fn]();
});
} else {
el.addEventListener(type, fn, false);
}
},
drawEditor: function (id) {
var $ = this,
textarea = this.ID(id),
toolbar = this.CE('div'),
br = this.CE('br'), //用于清除浮动
iframe = this.CE('iframe');
textarea.style.display = "none";
textarea.parentNode.insertBefore(toolbar, textarea);
textarea.parentNode.insertBefore(br, textarea);
textarea.parentNode.insertBefore(iframe, textarea);
br.style.cssText = "clear:both";
toolbar.setAttribute("id", "RTE_toolbar");
iframe.setAttribute("id", "RTE_iframe");
iframe.frameBorder = 0;
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
iframeDocument.designMode = "on";
iframeDocument.open();
iframeDocument.write('<html><head><style type="text/css">body{ font-family:arial; font-size:13px;background:#DDF3FF;border:0; }</style></head><body></body></html>');
iframeDocument.close();
var buttons = {//工具栏的按钮集合
'forecolor': '颜色',
'fontname': '字体',
'fontsize': '字码'
};
var fontFamilies = ['宋体', '黑体', '楷体', '幼圆', '扩展字体'];
var fontColors = ["黑色", "红色", "绿色", "黄色", "蓝色", "品红", "青色", "白色", "斑点", "条纹"];
var fontSizes = [[1, '8px', '8'],
[2, '12px', '12'],
[3, '16px', '16'],
[4, '24px', '24'],
[5, '32px', '32'],
[6, '40px', '40'],
[7, '48px', '48'],
[8, '56px', '56']];
var buttonClone = $.CE("a"),
fragment = document.createDocumentFragment();
buttonClone.className = 'button';
for (var i in buttons) {/*添加命令按钮的名字,样式*/
var button = buttonClone.cloneNode("true");
if (i == 'backcolor') {/*特殊处理背景色按钮*/
if (! +"\v1") {
button.setAttribute("title", "background")
} else {
button.setAttribute("title", "hilitecolor")
}
}
button.setAttribute("title", i); /*把execCommand的命令参数放到title*/
button.innerHTML = buttons[i];
button.setAttribute("unselectable", "on"); /*防止焦点转移到点击的元素上,从而保证文本的选中状态*/
toolbar[i] = button; /*★★★★把元素放进一个数组,用于下一个循环绑定事件!★★★★*/
fragment.appendChild(button);
}
toolbar.appendChild(fragment);
$.addEvent(toolbar, 'click', function () {
var e = arguments[0] || window.event,
target = e.srcElement ? e.srcElement : e.target,
command = target.getAttribute("title");
switch (command) {
case 'fontname': //这六个特殊处理,不直接执行fontEdit命令!
case 'forecolor':
case 'fontsize':
default: //其他执行fontEdit(cmd, null)命令
_format(command, '');
break;
}
});
/******************************************************************/
var fontPicker = $.CE('div');
fontPicker.className = "fontpicker";
toolbar.appendChild(fontPicker);
$.addEvent(toolbar['fontname'], 'click', function () {
fontPicker.innerHTML = $.fontPickerHtml('fontname', fontFamilies);
fontPicker.style.width = "60px";
fontPicker.setAttribute("id", "fontPicker");
bind_select_event(this, fontPicker);
});
/******************************************************************/
var fontPicker = $.CE('div');
fontPicker.className = "fontpicker";
toolbar.appendChild(fontPicker);
$.addEvent(fontPicker, 'click', function () {
var e = arguments[0] || window.event,
target = e.srcElement ? e.srcElement : e.target,
command = this.getAttribute("title");
var nn = target.nodeName.toLowerCase();
if (nn == 'a') {
var value;
if ('fontsize' == command) {
value = target.getAttribute('sizevalue');
} else {
value = target.innerHTML;
}
_format(command, value);
e.cancelBubble = true;
fontPicker.style.display = 'none';
}
}); /******************************************************************/
var fontColor = $.CE('div');
fontColor.className = "fontColor";
toolbar.appendChild(fontColor);
$.addEvent(toolbar['forecolor'], 'click', function () {
fontColor.innerHTML = $.fontClorHtml('forecolor', fontColors);
fontColor.style.width = "60px";
fontColor.style.height = "80px";
fontColor.setAttribute("id", "fontColor");
bind_select_event(this, fontColor);
}); /******************************************************************/
var fontColor = $.CE('div');
fontColor.className = "fontColor";
toolbar.appendChild(fontColor);
$.addEvent(fontColor, 'click', function () {
var e = arguments[0] || window.event,
target = e.srcElement ? e.srcElement : e.target,
command = this.getAttribute("title");
var nn = target.nodeName.toLowerCase();
if (nn == 'a') {
var value;
if ('fontsize' == command) {
value = target.getAttribute('sizevalue');
} else {
value = target.innerHTML;
if (value === "黑色") {
value = "black";
} else if (value === "红色") {
value = "red";
}
else if (value === "绿色") {
value = "Green";
}
else if (value === "黄色") {
value = "Yellow";
}
else if (value === "蓝色") {
value = "Blue";
}
else if (value === "品红") {
value = "bule";
}
else if (value === "青色") {
value = "SlateBlue";
}
else if (value === "白色") {
value = "White";
}
else if (value === "斑点") {
value = "bule";
}
else if (value === "条纹") {
value = "bule";
}
}
_format(command, value);
e.cancelBubble = true;
fontColor.style.display = 'none';
}
});
/******************************************************************/
$.addEvent(toolbar['fontsize'], 'click', function () {
fontPicker.innerHTML = $.fontPickerHtml('fontsize', fontSizes);
fontPicker.style.width = "80px";
bind_select_event(this, fontPicker);
});
/******************************************************************/
var _insertHTML = function (html) {
iframe.contentWindow.focus();
if (! +"\v1") {
/****这里需要解决IE丢失光标位置的问题,详见核心代码四**************/
iframeDocument.selection.createRange().pasteHTML(html);
} else {
var selection = iframe.contentWindow.getSelection();
var range;
if (selection) {
range = selection.getRangeAt(0);
} else {
range = iframeDocument.createRange();
}
var oFragment = range.createContextualFragment(html),
oLastNode = oFragment.lastChild;
range.insertNode(oFragment);
range.setEndAfter(oLastNode);
range.setStartAfter(oLastNode);
selection.removeAllRanges(); //清除选择
selection.addRange(range);
}
} /*******************核心代码之一******************************************/
/********************处理富文本编辑器的格式化命令**************************/
var _format = function (x, y) {
try {
iframeDocument.execCommand(x, false, y);
iframe.contentWindow.focus();
} catch (e) { }
}
/***********核心代码之二*************************************************/
/***********隐藏与显示弹出层**********************************************/
var bind_select_event = function (button, picker) {
button.style.position = 'relative';
var command = button.getAttribute("title");
picker.setAttribute("title", command); //转移命令
if (picker.style.display == 'none') {
picker.style.display = 'block';
picker.style.left = button.offsetLeft + 'px';
picker.style.top = (button.clientHeight + button.offsetTop) + 'px';
} else {
picker.style.display = 'none';
}
}
/*******************核心代码之三******************************************/
/**********************获取iframe的内容************************************/
$.addEvent(iframe.contentWindow, "blur", function () {
textarea.value = iframeDocument.body.innerHTML;
});
/*******************核心代码之四******************************************/
/*当光标离开iframe再进入时默认放在body的第1个节点上了,所以要记录光标的位置***/
if (! +"\v1") {
var bookmark;
//记录IE的编辑光标
$.addEvent(iframe, "beforedeactivate", function () {//在文档失去焦点之前
var range = iframeDocument.selection.createRange();
bookmark = range.getBookmark();
});
//恢复IE的编辑光标
$.addEvent(iframe, "activate", function () {
if (bookmark) {
var range = iframeDocument.body.createTextRange();
range.moveToBookmark(bookmark);
range.select();
bookmark = null;
}
});
}
/**********************************************************fontpicker******/
addSheet('\
#RTE_iframe{width:600px;height:300px;}\
#RTE_toolbar{float:left;width:600px;background:#D5F3F4;}\
#RTE_toolbar .button{display:block;float:left;border:1px solid #CCC;margin-left:5px;\
color:#000;background:#D0E8FC;height:20px;text-align:center;padding:0 10px;white-space: nowrap;}\
#RTE_toolbar select{float:left;height:20px;width:60px;margin-right:5px;}\
#RTE_toolbar .button:hover{color:#fff;border-color:#fff #aaa #aaa #fff;}\
div.fontpicker{display:none;height:150px;overflow:auto;position:absolute;\
border:2px solid #c3c9cf;background:#F1FAFA;}\
div.fontpicker a{display:block;text-decoration:none;color:#000;background:#F1FAFA;padding:2px;}\
div.fontpicker a:hover{color:#999;background:#e3e6e9;}\
div.colorpicker {display:none;position:absolute;width:216px;border:2px solid #c3c9cf;background:#f8f8f8;}\
div.colorpicker table{border-collapse:collapse;margin:0;padding:0;}\
div.colorpicker .cell td{height:12px;width:12px;}\
div.fontColor{display:none;height:60px;overflow:auto;position:absolute;\
border:2px solid #c3c9cf;background:#F1FAFA;}\
div.fontColor a{display:block;text-decoration:none;color:#000;background:#F1FAFA;padding:2px;}\
div.fontColor a:hover{color:#999;background:#e3e6e9;}\
div.fontColor {display:none;position:absolute;width:60px;border:2px solid #c3c9cf;background:#f8f8f8;}\
div.fontColor table{border-collapse:collapse;margin:0;padding:0;}\
div.fontColor .cell td{height:12px;width:12px;}');
}
}
个人总结:dom是 如此的强大和优美,所以请不要随便说精通javascript.递归是一种思路和算法(这里用了8个递归 当然大部分思路一样!)。
关于递归借用我朋友的话 如果你项目里面有2个for 一般就可以尝试递归。 优点:把字符串转换成dom节点处理可以避免浏览器差役, 不要永远想着大规模去处理字符串 .当然这个功能的完成也求助了我的朋友!
吐槽一句 后台出身的人却喜欢前端技术。 最后感谢大家的阅读 希望能看的懂的朋友 如果觉得有意义帮忙推荐下 谢谢!

javascript 解析dom字符串的更多相关文章

  1. javascript解析JSON---将字符串转换为json对象

    <script type="text/javascript">       var str = '{"name":"jack", ...

  2. Javascript 解析字符串生成 XML DOM 对象。

    Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.​1. [代码]函数   ppt模 ...

  3. JavaScript使用浏览器内置XML解析器解析DOM对象

    所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器.解析器把 XML 转换为 XML DOM 对象 (可通过 JavaScript 操作的对象). 一.获取DOM对象 XMLHttpReq ...

  4. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

  5. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  6. JavaScript与DOM

    文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API.Javascript和D ...

  7. 一周一话题之四(JavaScript、Dom、jQuery全面复习总结<js篇>)

    -->目录导航 一. JavaScript 1. js介绍 2. js语法 3. js进阶 4. js高级 5. 事例代码下载 一. JavaScript 做BS系统,JavaScript的使用 ...

  8. js学习笔记----JavaScript中DOM扩展的那些事

    什么都不说,先上总结的图~   Selectors API(选择符API) querySelector()方法 接收一个css选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null ...

  9. 深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手

    文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API. Javascript和 ...

随机推荐

  1. html、css杂记

    1:浮动 <div style="float: left"> 2:清除浮动,把父div撑起来 <div style="clear:both"& ...

  2. Cool Sites

    尽快学习完成这个网页 https://www.sitepoint.com/php-security-cross-site-scripting-attacks-xss/ https://msdn.mic ...

  3. C# Thread挂起线程和恢复线程

    前言 众所周知,Thread类中的挂起线程和恢复线程微软已标记过时,因为可能会造成问题   Resume()   恢复当前线程 已过时. Resumes a thread that has been ...

  4. SpringMVC应用

    SpringMVC的核心是DispatcherServlet,这个Servlet充当SpringMVC的前端控制器. SpringMVC是多线程的吗??? 控制器是一个用于处理请求的Spring组件. ...

  5. 几乎所有的html + css 内容的编写, 都可以通过emmet来写

    在今后的html编写中, 强迫 / 必须 使用 emmet来编写html代码了 !!!! 只使用zen coding, 只使用emmet 来编写, 再也不用以前的那种移动过去移动过来的 写法: 原始的 ...

  6. PostgreSQL中的时间操作总结

    取当前日期的函数: (1)       取当前时间:select now() (2)       取当前时间的日期: select current_date (3)       取当前具体时间(不含日 ...

  7. document.all的详细解释(document.all基本上所有浏览器可用!)

    从何而来从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数 ...

  8. R-数据结构

    目录 数据类型(模式) 字符型 数值型 逻辑型 整形 复数型(虚数) 原生型(字节) 数据结构 向量 矩阵 数组 数据框 列表 数据类型 数据结构  向量 用于存储数值型.字符型或逻辑型数据的一维数组 ...

  9. IOS开发之----NSDictionary,JSON和XML互相转换

    本文永久地址为 http://www.cnblogs.com/ChenYilong/p/4044521.html,转载请注明出处.     -(void)test {     //XML文本范例   ...

  10. CSS3实现背景颜色渐变 摘抄

    一. Webkit浏览器 (1) 第一种写法: background:-webkit-gradient(linear ,10% 10%,100% 100%, color-stop(0.14,rgb(2 ...