讓論壇可運行HTML或者Script原始碼

來源:互聯網
上載者:User
原始碼    簡 介
  這篇東西是我在開發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) = " 以下內容為程式碼" then
result = result
CODETXT = CODETXT + Mid(tbStr,i,1)
if Right(CODETXT,7) = "" 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," 以下內容為程式碼") > 0 and Instr(tbStr,"") > 0 then
tbStr = Replace(tbStr," 以下內容為程式碼",CODE1)
tbStr = Replace(tbStr,"",CODE2)
end if
end Function
%>
  這就是當前台頁面資料輸出準備調用之間原始碼的時候我們需要做的一些替換,以上兩斷代碼建議儲存在一個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了……這東西是經過我反覆實踐才做出來的,其中還是有很不理想的地方,如果高手們你們能看出來或者直接就解決了,不要忘記和大家分享!

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。