给zblog加上运行代码功能补允
转载出自:http://yuhua.yfidc.com/post/388.shtml
给zblog加上运行代码功能
1、在script/common.js里面增加
function copycode(obj) {
var rng = document.body.createTextRange();
rng.moveToElementText(obj);
rng.scrollIntoView();
rng.select();
rng.execCommand("Copy");
rng.collapse(false);
}
function runCode(obj) {
var winname = window.open('', "_blank", '');
winname.document.open('text/html', 'replace');
winname.opener = null // 防止代码对论谈页面修改
winname.document.writeln(obj.value);
winname.document.close();
}
function saveCode(obj) {
var winname = window.open('', '_blank', 'top=10000');
winname.document.open('text/html', 'replace');
winname.document.writeln(obj.value);
winname.document.execCommand('saveas','','code.htm');
winname.close();
}
2、c_function.asp,查找Function TransferHTML(source,para),把
If Instr(para,"[space]")>0 Then source=Replace(source," "," ")
注释掉。
找到
objRegExp.Pattern="(\[CODE\])(.+?)(\[\/CODE\])"
strContent=objRegExp.Replace(strContent,"<textarea class=""code"" name=""runcode0"" rows=""10"" cols=""50"">$2</textarea>")
修改为
objRegExp.Pattern="(\[CODE\])(.+?)(\[\/CODE\])"
strContent=objRegExp.Replace(strContent,"<textarea class=""code"" name=""runcode0"" rows=""10"" cols=""50"">$2</textarea><br /><input type=""button"" value=""运行代码"" onclick=""runCode(runcode0)""> <input type=""button"" value=""复制代码"" onclick=""copycode(runcode0)""> <input type=""button"" value=""另存代码"" onclick=""saveCode(runcode0)""> 提示:您可以先修改部分代码再运行")
3、重建所有页面。
说明:本修改针对zblog1.6版本,其它版本请对照修改。
今天突然发现Blog的代码运行功能出了点问题,当一个页面出现两个[code]时发生不可RUN的错误,检查代码
发现问题代码"runcode0"用了一个常量来赋值,这样一来造成以上问题发生。解决办法如下:
解决思路:用一个变量赋值,让它循环或者随机一个不同的值,这样就可以一个页面出现多个[code],是不是很爽!
For strID=0 To 1000
strID=strID+1
Next
strID=Int(7999 * Rnd + 2000)
代码修改实例:
1、参照上面原码在script/common.js里面修改如下:
function copycode(obj) {
var obj=document.getElementById(obj);
var rng = document.body.createTextRange();
rng.moveToElementText(obj);
rng.scrollIntoView();
rng.select();
rng.execCommand("Copy");
rng.collapse(false);
//}
}
function runCode(obj) {
var obj=document.getElementById(obj);
var winname = window.open('', "_blank", '');
winname.document.open('text/html', 'replace');
winname.opener = null // 防止代码对论谈页面修改
winname.document.writeln(obj.value);
winname.document.close();
//}
}
function saveCode(obj) {
var obj=document.getElementById(obj);
var winname = window.open('', '_blank', 'top=10000');
winname.document.open('text/html', 'replace');
winname.document.writeln(obj.value);
winname.document.execCommand('saveas','','code.htm');
winname.close();
//}
}
2、c_function.asp里面修改如下:
objRegExp.Pattern="(\[CODE\])(.+?)(\[\/CODE\])"
Dim strID
strID=Int(7999 * Rnd + 2000)
strContent=objRegExp.Replace(strContent,"<textarea class=""code"" ID="""& strID & """" rows=""10"" cols=""50"">$2</textarea><br /><input type=""button"" value=""运行代码"" onclick=""runCode('"&strID&"')""> <input type=""button"" value=""复制代码"" onclick=""copycode('"&strID&"')""> <input type=""button"" value=""另存代码"" onclick=""saveCode('"&strID&"')""> 提示:您可以先修改部分代码再运行")
3、修改完毕重建所有页面。
代码效果请看:http://yuhua.yfidc.com/post/458.shtml
本文主题给zblog加上运行代码功能补允