纯js实现的论坛常用的运行代码的效果

  用的时候把runcode.js放到网站目录,在需要运行代码的效果的地方放如下的代码

  

复制代码 代码如下:

  <div style="margin-top: 1em; margin-bottom: 1em"><div style="display:none">{1}</div><textarea rows="12" cols="95" style='font-family:"Courier New",Courier,monospace;'></textarea><script src="runcode.js"></script><br /><input type="button" value="运行代码" style="border-left:1px solid #B1B4CD;border-right:1px solid #494D74;border-top:1px solid #B1B4CD;;border-bottom:1px solid #494D74;background:#696D81;color:#FFFFFF;" onclick="runCode(this)"> <input type="button" style="border-left:1px solid #B1B4CD;border-right:1px solid #494D74;border-top:1px solid #B1B4CD;;border-bottom:1px solid #494D74;background:#696D81;color:#FFFFFF;"value="复制代码" onclick="copycode(this)"> <input type="button" style="border-left:1px solid #B1B4CD;border-right:1px solid #494D74;border-top:1px solid #B1B4CD;;border-bottom:1px solid #494D74;background:#696D81;color:#FFFFFF;"value="另存代码" onclick="saveCode(this)"> <input type="button" style="border-left:1px solid #B1B4CD;border-right:1px solid #494D74;border-top:1px solid #B1B4CD;;border-bottom:1px solid #494D74;background:#696D81;color:#FFFFFF;"value="还原代码" onclick="preCode(this)">  提示:您可以先修改部分代码再运行</div>

  就可以了。

  runcode.js文件

  

复制代码 代码如下:

  //Scripts runcode for BBS ver 2008-06-30, by Bound0([email protected])

  //First published at http://bbs.blueidea.com

  //An example: http://bbs.veryhman.com/showtopic-20094.aspx

  function runCode(which) {

  var p=which.parentNode;

  var os=p.getElementsByTagName("textarea");

  if(os.length==0)return;

  var o=os[0];

  var winname = window.open('', "_blank", '');

  winname.document.open('text/html', 'replace');

  winname.opener = null;

  winname.document.write(o.value);

  winname.document.close();

  }

  function saveCode(which) {

  var p=which.parentNode;

  var os=p.getElementsByTagName("textarea");

  if(os.length==0)return;

  var o=os[0];

  var winname = window.open('', '_blank', 'top=10000');

  winname.document.open('text/html', 'replace');

  winname.document.write(o.value);

  winname.document.execCommand('saveas','','code.htm');

  winname.close();

  }

  function copycode(which) {

  var p=which.parentNode;

  var os=p.getElementsByTagName("textarea");

  if(os.length==0)return;

  var o=os[0];

  var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);

  if(is_ie && o.style.display != 'none') {

  var rng = document.body.createTextRange();

  rng.moveToElementText(o);

  rng.scrollIntoView();

  rng.select();

  rng.execCommand("Copy");

  rng.collapse(false);

  }

  }

  function text(e)

  {

  var t = "";

  e = e.childNodes || e;

  for ( var j = 0; j < e.length; j++ )

  {

  if(e[j].nodeType != 1){t+=e[j].nodeValue}

  else

  {

  var k=e[j].nodeName;

  if(k=='BR'||k=='P'){t+='\r\n'}

  t+=text(e[j].childNodes)

  }

  }

  return t;

  }

  function preCode(which) {

  var p=which.parentNode;

  var os=p.getElementsByTagName("textarea");

  if(os.length==0)return;

  var o=os[0];

  var osv=p.getElementsByTagName("div");

  if(osv.length==0)return;

  var ov=osv[0];

  var c=''

  if(typeof(ov.innerText)!="undefined"){c=ov.innerText}else{c=text(ov)}

  o.value=c

  }

  (function(){var s=document.getElementsByTagName("script");preCode(s[s.length-1])})()