<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script> function GetParentSpanObj(o) { var o2 = o; var st; while (o2) { st = o2.nodeName.toLowerCase(); if ((st == "span") || (st == "p")) { return o2; } if ((st == "div") || (st == "body")) { return null; } o2 = o2.parentNode; } return null; } function IsP(o) { //判断父元素中是否包含 P, 如果包含则判断为中文; 中文格式 <p> <span>...</span> <span>...</span>... </p> var o2 = o; var st; while (o2) { st = o2.nodeName.toLowerCase(); if (st == "p") { return true; } o2 = o2.parentNode; } return false; } //该函数为当前 span 内的单词包裹 <b></b> function DownEn() { var e = window.event ? window.event : arguments.callee.caller.arguments[0]; var o = e.target ? e.target : e.srcElement; //originalEvent? if (o.nodeName.toLowerCase() == "b") { return; } // <b></b> 表示被处理过; var o2 = GetParentSpanObj(o); //获取上层的 sapn 对象, 或 p 对象 var str = o2.innerHTML; if (str.search(/<b>/i) > -1) { return; } //如果包含 <b> 也是处理过了 arr = str.match(/<\/?[^<>]+>/g); //html 标签 <> 和 </> if (arr) { for (var i=0; i<arr.length; i++) { str = str.replace(arr[i], "{" + i + "}"); } //临时 html 标签 } if (IsP(o)) { str = str.replace(/[\u3400-\u9FFF]/g, "<b>$&</b>"); //中文, 给单字包裹标签 } else { str = str.replace(/\b[a-z][a-z0-9\'\-]*?\b/ig, "<b>$&</b>"); //英文, 给单词包裹标签 } if (arr) { for (var i=0; i<arr.length; i++) { str = str.replace("{" + i + "}", arr[i]); } //换回 html 标签 } o2.innerHTML = str; } function WordUp() { var e = window.event ? window.event : arguments.callee.caller.arguments[0]; var o = e.target ? e.target : e.srcElement; if (o.nodeName.toLowerCase() != "b") { return; } //没有包裹 <b></b> 的不是单词 var str = o.innerHTML; // if (str.search(/</) > -1) { str = ""; return; } var str2; if (o.parentNode.nodeName.toLowerCase() == "em") { str2 = o.parentNode.getAttribute("title"); str = str + ";" + str2; } if (o.parentNode.nodeName.toLowerCase() == "i") { str2 = o.parentNode.innerText ? o.parentNode.innerText : o.parentNode.textContent; if (str != str2) { str = str + ";" + str2; } if (o.parentNode.parentNode.nodeName.toLowerCase() == "em") { str2 = o.parentNode.parentNode.getAttribute("title"); str = str + ";" + str2; } } //return str; document.getElementById("result").value = str; // alert(str); } </script> </head> <body> <div onmousedown="DownEn()" onmouseup="WordUp()"> <div><span>111 abc <em title="xxx … yyy"><i>Delphi bbb ccc</i> wanyi <i>abc</i></em> Delphi Delphix xxx Delphi</span> <p>万一的 Delphi 博客;<i>万一</i>的 Delphi 博客</p> </div> <br><br><hr> <input type="text" name="result" id="result" disabled="disabled" size="181"/> </div> </body> </html>
posted on 2015-10-10 13:39  万一  阅读(105)  评论(0)    收藏  举报