大家好,我想知道是否有人能帮助我?在我的网站上,我创建了一个博客。在JavaScript中,我创建了一个格式化文本的程序。它使用正则表达式来格式化/转换文本。目前它有一些不期望的结果。如果您滚动到位于this link的帖子的底部,您会看到一些随机标记。我不知道他们来自哪里或为什么他们出现。如果有人能提供帮助,我会非常感激。
这是用于格式化文本的javascript:
function viewPost(val1) {
var msg = val1.innerHTML;
console.log(msg);
// disable < and > to prevent scripting attacks
msg = msg.replace(/<(.*?)>/gi, "<$1>");
msg = msg.replace(/<\/(.*?)>/gi, "</$1>");
// preserve new lines
msg = msg.replace(/\n/gi, "<br />");
//colon
msg = msg.replace(/\:/gi, ":");
// Basic BBCodes.
// head large
msg = msg.replace(/\[hdlg\]/gi, '<h1>');
msg = msg.replace(/\[\/hdlg\]/gi, '</h1>');
// head medium
msg = msg.replace(/\[hdmd\]/gi, '<h2>');
msg = msg.replace(/\[\/hdmd\]/gi, '</h2>');
// head small
msg = msg.replace(/\[hdsm\]/gi, '<h3>');
msg = msg.replace(/\[\/hdsm\]/gi, '</h3>');
// bold text
msg = msg.replace(/\[b\]/gi, "<strong>");
msg = msg.replace(/\[\/b\]/gi, "</strong>");
// italic text
msg = msg.replace(/\[i\]/gi, "<em>");
msg = msg.replace(/\[\/i\]/gi, "</em>");
// underlined text
msg = msg.replace(/\[u\]/gi, "<u>");
msg = msg.replace(/\[\/u\]/gi, "</u>");
// centre text
msg = msg.replace(/\[c\]/gi, '<p style="text-align:center;">');
msg = msg.replace(/\[\/c\]/gi, "</p>");
// left align text
msg = msg.replace(/\[l\]/gi, '<p style="text-align:left;">');
msg = msg.replace(/\[\/l\]/gi, "</p>");
// right align text
msg = msg.replace(/\[r\]/gi, '<p style="text-align:right;">');
msg = msg.replace(/\[\/r\]/gi, "</p>");
// justify text
msg = msg.replace(/\[j\]/gi, '<p style="text-align:justify;">');
msg = msg.replace(/\[\/j\]/gi, "</p>");
// code blocks
msg = msg.replace(/\[code\]/gi, '<div style="background:#484848;color:#ffffff;text-align:left;border-radius:8px;padding:10px;overflow:hidden;">');
msg = msg.replace(/\[\/code\]/gi, '</div>');
// def lists
msg = msg.replace(/\[def\]/gi, '<dl>');
msg = msg.replace(/\[\/def\]/gi, '</dl>');
// def term
msg = msg.replace(/\[term\]/gi, '<dt>');
msg = msg.replace(/\[\/term\]/gi, '</dt>');
// def description
msg = msg.replace(/\[desc\]/gi, '<dd>');
msg = msg.replace(/\[\/desc\]/gi, '</dd>');
// unordered list
msg = msg.replace(/\[unord\]/gi, '<ul>');
msg = msg.replace(/\[\/unord\]/gi, '</ul>');
// ordered list
msg = msg.replace(/\[ord\]/gi, '<ol>');
msg = msg.replace(/\[\/ord\]/gi, '</ol>');
// list item
msg = msg.replace(/\[item\]/gi, '<li>');
msg = msg.replace(/\[\/item\]/gi, '</li>');
// links
msg = msg.replace(/\[url=(.*?)\](.*?)/gi, '<a href="$1" target="_blank">$2');
msg = msg.replace(/\[\/url\]/gi, '</a>');
// images
msg = msg.replace(/\[postpic=(.*?)\sclass=(.*?)\stitle=(.*?)\salt=(.*?)\sstyle=(.*?)\]/gi, '<img src="/images/postAssets/$1" class="$2" title="$3" alt="$4" style="$5" />');
msg = msg.replace(/\[\/postpic\]/gi, "");
// font colour [colour=COL] [/colour]
msg = msg.replace(/\[colour=(.*?)\]/gi, '<span style="color:$1;">');
msg = msg.replace(/\[\/colour\]/gi, '</span>');
// tables
msg = msg.replace(/\[table\]/gi, '<table style="padding: 5px;">');
msg = msg.replace(/\[\/table\]/gi, '</table>');
// table row
msg = msg.replace(/\[trow\]/gi, '<tr style="border:1px solid #000000;">');
msg = msg.replace(/\[\/trow\]/gi, '</tr>');
// table header
msg = msg.replace(/\[thead\]/gi, '<th style="padding: 5px;">');
msg = msg.replace(/\[\/thead\]/gi, '</th>');
// table data
msg = msg.replace(/\[tdata\]/gi, '<td style="padding: 5px;">');
msg = msg.replace(/\[\/tdata\]/gi, '</td>');
// subscript
msg = msg.replace(/\[sub\]/gi, '<sub>');
msg = msg.replace(/\[\/sub\]/gi, '</sub>');
// superscript
msg = msg.replace(/\[sup\]/gi, '<sup>');
msg = msg.replace(/\[\/sup\]/gi, '</sup>');
val1.innerHTML = msg;
console.log(val1.innerHTML);}
我们将非常感谢您提供的任何建议。正如我所说,我不确定为什么会发生这种情况,但我相信我的JavaScript存在问题。它显示的页面是一个.aspx页面,不确定它是否与它有任何关系,但想到id以防万一。如果需要任何进一步的细节,请告诉我,我将提供。
答案 0 :(得分:0)
您的代码块包含如下文字:
List<string> cols = new List<string>();
这看起来像两个<string>
标签
和
<ul>
<li>Colour
<ul>
这些内容需要进行转义,因为您val1.innerHTML = msg;
来电时浏览器可能会自动将其关闭。