123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- //格式化
- function formatText(editor,sj,zt,zh) {
- var myeditor = editor;
- if (myeditor.mode == "wysiwyg") {
- var tempimg = new Array();
- var temptable = new Array();
- var tempobject = new Array();
- var isPart = false; //暂时无法实现局部格式化
- if (!isPart) {
- var tmpDiv = document.createElement("DIV");
- var editorhtml = myeditor.getData();
- editorhtml = editorhtml.replace(
- /<div style="page-break-after: always;?">\s*<span style="display: none;?"> <\/span>\s*<\/div>/gi,
- "<p>[page]</p>"
- ); //将div span标签替换为p 标签
- tmpDiv.innerHTML = editorhtml
- .replace(/ /gi, "")
- .replace(/<div/gi, "<p")
- .replace(/<\/div/gi, "</p"); //移除空格标签,div替换为p标签。
- if (
- window.navigator.userAgent.toLowerCase().indexOf("msie") > 0
- ) {
- tmpDiv.innerHTML = tmpDiv.innerHTML.replace(
- /<\/p>/gi,
- "<br /></p>"
- ); //每个段落相隔一行
- }
- var tables = tmpDiv.getElementsByTagName("TABLE");
- if (tables != null && tables.length > 0) {
- for (var j = 0; j < tables.length; j++) {
- temptable[temptable.length] = tables[j].outerHTML;
- }
- var formattableCount = 0;
- for (var j = 0; j < tables.length; ) {
- tables[j].outerHTML =
- "#FormatTableID_" + formattableCount + "#";
- formattableCount++;
- }
- }
- var objects = tmpDiv.getElementsByTagName("OBJECT");
- if (objects != null && objects.length > 0) {
- for (var j = 0; j < objects.length; j++) {
- tempobject[tempobject.length] = objects[j].outerHTML;
- }
- var formatobjectCount = 0;
- for (var j = 0; j < objects.length; ) {
- objects[j].outerHTML =
- "#FormatObjectID_" + formatobjectCount + "#";
- formatobjectCount++;
- }
- }
- var imgs = tmpDiv.getElementsByTagName("IMG");
- if (imgs != null && imgs.length > 0) {
- for (var j = 0; j < imgs.length; j++) {
- var t = document.createElement("IMG");
- t.alt = imgs[j].alt;
- t.src = imgs[j].src;
- t.width = imgs[j].width;
- t.height = imgs[j].height;
- t.align = imgs[j].align;
- tempimg[tempimg.length] = t;
- }
- var formatImgCount = 0;
- for (var j = 0; j < imgs.length; ) {
- imgs[j].outerHTML =
- "#FormatImgID_" + formatImgCount + "#";
- formatImgCount++;
- }
- }
- var strongarray = new Array();
- var strongcount = 0;
- for (
- var i = 0;
- i < tmpDiv.getElementsByTagName("b").length;
- i++
- ) {
- strongarray[strongcount] = tmpDiv
- .getElementsByTagName("b")
- [i].innerText.trim();
- tmpDiv.getElementsByTagName("b")[i].innerHTML =
- "#FormatStrongID_" + strongcount + "#";
- strongcount++;
- }
- for (
- var i = 0;
- i < tmpDiv.getElementsByTagName("strong").length;
- i++
- ) {
- strongarray[strongcount] = tmpDiv
- .getElementsByTagName("strong")
- [i].innerText.trim();
- tmpDiv.getElementsByTagName("strong")[i].innerHTML =
- "#FormatStrongID_" + strongcount + "#";
- strongcount++;
- }
- var html = processFormatText(tmpDiv.innerText,sj,zt,zh);
- html = html.replace(
- /<p>\[page\]<\/p>/gi,
- '<div style="page-break-after: always;"><span style="display: none;"> </span></div>'
- ); //p标签替换回原来的div和span标签。
- if (temptable != null && temptable.length > 0) {
- for (var j = 0; j < temptable.length; j++) {
- var tablehtml = temptable[j];
- html = html.replace(
- "#FormatTableID_" + j + "#",
- tablehtml
- );
- }
- }
- if (tempobject != null && tempobject.length > 0) {
- for (var j = 0; j < tempobject.length; j++) {
- var objecthtml =
- '<p align="center">' + tempobject[j] + "</p>";
- html = html.replace(
- "#FormatObjectID_" + j + "#",
- objecthtml
- );
- }
- }
- if (tempimg != null && tempimg.length > 0) {
- for (var j = 0; j < tempimg.length; j++) {
- var imgheight = "";
- var imgwidth = "";
- if (tempimg[j].height != 0)
- imgheight = ' height="' + tempimg[j].height + '"';
- if (tempimg[j].width != 0)
- imgwidth = ' width="' + tempimg[j].width + '"';
- var imgalign = "";
- if (tempimg[j].align != "")
- imgalign = ' align="' + tempimg[j].align + '"';
- var imghtml =
- '<p align="center"><img src="' +
- tempimg[j].src +
- '" alt="' +
- tempimg[j].alt +
- '"' +
- imgwidth +
- " " +
- imgheight +
- ' align="' +
- tempimg[j].align +
- '" border="0"></p><p> </p><p> </p>';
- html = html.replace("#FormatImgID_" + j + "#", imghtml);
- }
- }
- for (var i = 0; i < strongcount; i++) {
- html = html.replace(
- "#FormatStrongID_" + i + "#",
- "<p><span style='font-family:"+zt+";'><span style='font-size:"+zh+"px;'><strong>" + strongarray[i] + "</strong></span></span></p>"
- );
- }
- while (html.indexOf("</p></p>") != -1)
- html = html.replace("</p></p>", "</p>");
- while (html.indexOf('<p><p align="center">') != -1)
- html = html.replace(
- '<p><p align="center">',
- '<p align="center">'
- );
- editor.setData(html);
- } else {
- }
- } else {
- alert("必须在设计模式下操作!");
- }
- }
- function processFormatText(textContext,sj,zt,zh) {
- var text = dbc2Sbc(textContext);
- var prefix = "";
- var tmps = text.split("\n");
- var html = "";
- for (var i = 0; i < tmps.length; i++) {
- var tmp = tmps[i].trim();
- if (tmp.length > 0) {
- var reg = /#Format[A-Za-z]+_\d+#/gi;
- var f = reg.exec(tmp);
- /* if (f != null) {
- tmp = tmp.replace(/#Format[A-Za-z]+_\d+#/gi, "");
- html += f;
- if (tmp != "")
- html += '<p align="center">' + tmp + "</p>\n";
- } else {html += "<p style='text-indent:"+sj+"em;'><span style='font-family:"+zt+";'><span style='font-size:"+zh+"px;'>" + tmp + "</span></span></p>\n";}*/
- html += "<p style='text-indent:"+sj+"em;'><span style='font-family:"+zt+";'><span style='font-size:"+zh+"px;'>" + tmp + "</span></span></p>\n";
- }
- }
- return html;
- }
- function dbc2Sbc(str) {
- var result = "";
- for (var i = 0; i < str.length; i++) {
- var code = str.charCodeAt(i);
- // “65281”是“!”,“65373”是“}”,“65292”是“,”。不转换","
- if (
- code >= 65281 &&
- code < 65373 &&
- code != 65292 &&
- code != 65306
- ) {
- // “65248”是转换码距
- result += String.fromCharCode(str.charCodeAt(i) - 65248);
- } else {
- result += str.charAt(i);
- }
- }
- return result;
- }
- String.prototype.trim = function() {
- return this.replace(/(^[\s ]*)|([\s ]*$)/g, "");
- };
- String.prototype.leftTrim = function() {
- return this.replace(/(^\s*)/g, "");
- };
- String.prototype.rightTrim = function() {
- return this.replace(/(\s*$)/g, "");
- };
|