分享
 
 
 

让论坛可运行HTML或者Script源代码

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

简介

这篇东西是我在开发TOL8.COM讨论组的时候学会的,涉及的内容比较多,所以不适合初级用户,他的目的就是让论坛可以发表规则的HTML或者Script原代码到文本框内,用户点击后就能看到运行效果,这对讨论技术的站点是很有必要的!

正文

要看效果请先打开这个网址http://www.TOL8.com/pages/pages.asp?id=76

首先如果你是为利用ASP开发项目的,你肯定会做过一些管理新闻发布系统,或者BBS之类的东西,遇到一些发表源文件的地方,为了安全我们不得不做一些代码转换。

比如:tbStr = Replace(tbStr,"<","<")这就是将tbStr的那些输出后会影响页面的标签替换掉,当然实际的操作过程比我现在说的要复杂得多了! 下面就按照我自己的方法给大家介绍今天的内容,理解后就可以运用自如了!

<%

Function TOL8HTML(tbStr)

Dim result, l, CODETXT

if isNULL(tbStr) then

TOL8HTML=""

exit function

end if

l=len(tbStr)

result=""

CODETXT = ""

Dim i

For i = 1 to l

if Right(result,6) = "[CODE]" then

result = result

CODETXT = CODETXT + Mid(tbStr,i,1)

if Right(CODETXT,7) = "[/CODE]" then

result = result + CODETXT

end if

else

Select Case mid(tbstr,i,1)

Case "<"

result=result+"<"

Case ">"

result=result+">"

Case chr(13)

result = result + "<br>"

Case chr(34)

result=result+"""

Case "&"

result=result+"&"

Case chr(32)

if i+1<=l and i-1>0 then

if mid(tbStr,i+1,1)=chr(32) or mid(tbStr,i+1,1)=chr(9) or mid(tbStr,i-1,1)=chr(32) or mid(tbStr,i-1,1)=chr(9) then

result=result+" "

else

result=result+" "

end if

else

result=result+" "

end if

case chr(9)

result=result+" "

case else

result=result+mid(tbStr,i,1)

End Select

end if

next

TOL8HTML = result

End Function

%>

开发过论坛的朋友一眼就能看出上面这段代码是很典型的将HTML标记转换为安全字符的函数,调用的时候假如变量是strs, 方法就是 strs=TOL8HTML(strs)

只不过我加多了一段红色的代码部分这既是在论坛有调用源代码标签的提示后不执行下面的转换!如果你认为多余可以去掉试试,我也就不多说了, 随后我们还需要建立一个函数

<%

Function TOL8UBB

Dim CODE1, CODE2

CODE1 = "<table align=center width=""98%"""&_

" border=0 cellpadding=2 cellspacing=2><tr>"&_

"<td class=blank_2>表格内为可运行程序代码:"&_

"</td></tr><tr><td>"&_

" <TEXTAREA rows=12 cols=80 >"

CODE2 = "</TEXTAREA><BR> "&_

"<INPUT onclick=runCode() type=button"&_

" value=运行代码>"&_

"</td></tr><tr><td></td></tr></table>"

if Instr(tbStr,"[CODE]") > 0 and Instr(tbStr,"[/CODE]") > 0 then

tbStr = Replace(tbStr,"[CODE]",CODE1)

tbStr = Replace(tbStr,"[/CODE]",CODE2)

end if

end Function

%>

这就是当前台页面数据输出准备调用[CODE] [/CODE]之间源代码的时候我们需要做的一些替换,以上两断代码建议存储在一个ASP页面内,我们这里把他们保存为TOL8UBB.asp!

以上两个都完成了,我们该看看访客们要浏览时的页面lookPage.asp如何设计了,细心的朋友会发现第二段代码中再作替换的时候有个按钮加了一个JS函数的调用动作,而这个函数在哪里呢,当然就在这个lookPage.asp页面里了呀!我们先用include来将TOL8UBB.ASP包含进来然后加入下面这段JS

<Script>

function runCode() //本段JS来自经典论坛

{

var code=event.srcElement.parentElement.children[0].value;//即要运行的代码。

var newwin=window.open('','',''); //打开一个窗口并赋给变量newwin。

newwin.opener = null // 防止代码对论谈页面修改

newwin.document.write(code); //向这个打开的窗口中写入代码code,这样就实现了运行代码功能。

newwin.document.close();

}

</Script>

最后在你把数据输出的时候先这里调用两个已经设计好了的函数如

strs = TOL8HTML(strs)

strs = TOL8UBB(strs)

Response.Write strs

就OK了……这东西是经过我反复实践才做出来的,其中还是有很不理想的地方,如果高手们你们能看出来或者直接就解决了,不要忘记和大家分享!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有