知向前端
纯js实现多个可在页面运行代码实例?
2015-5-12 Jon


纯js实现多个可在页面运行代码实例




<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>纯js实现多个可在页面运行代码实例</title>

</head>

<body>

  <div class='text-code'>

    <textarea class="code-vessel" name="textarea" rows="10">

  <h2>

    他放不下陈年往事高调了一世<br>

    没落贵族守着仅剩的自尊仍傲慢固执<br>

    磨损的钻石<br>

    狂妄不羁的城市<br>

    在梦里依旧豪华极致<br>

    ——许哲佩《没落贵族》

  </h2>

    </textarea><br>

    <button class="run-code">运行代码</button><span class="run-info">您可以修改框中代码后运行查看<span>

  </div><br>

  <div class='text-code'>

    <textarea class="code-vessel" name="textarea" rows="10">

  <h2>

    我们的爱 只爱到一半<br>

    约好的幸福 不能靠岸<br>

    慢慢的习惯 享受着孤单<br>

    偶尔也会被寂寞拆穿<br>

    我们的爱只爱到一半<br>

    手牵手的旅程 忘了走完<br>

    曾经的浪漫 已被风吹散<br>

    埋在心底的遗憾<br>

    时间会替我们保管<br>

    ——魏晨《只爱到一半》

  </h2>

    </textarea><br>

    <button class="run-code">运行代码</button><span class="run-info">您可以修改框中代码后运行查看<span>

  </div><br>

  <div class='text-code'>

    <textarea class="code-vessel" name="textarea" rows="10">

  <h2>

    如果有一天 我们再见面<br>

    时间会不会倒退一点<br>

    也许我们都忽略<br>

    互相伤害之外的感觉<br>

    如果哪一天 我们都发现<br>

    好聚好散不过是种遮掩<br>

    如果我们没发现<br>

    就给彼此多一点时间<br>

    ——梁静茹《如果有一天》

  </h2>

    </textarea><br>

    <button class="run-code">运行代码</button><span class="run-info">您可以修改框中代码后运行查看<span>

   </div>

  <script>

    //运行文本域代码 原生js实现

    window.onload=function(){

      var oRunCode=getByClass('button','run-code',1);

      for(var i=0,len=oRunCode.length;i<len;i++){

        oRunCode[i].onclick=function(){

          var oParent=this.parentNode;

          var codeVessel=getByClass(oParent,'code-vessel',0);

          runCode(codeVessel[0]);

        }

      }

    };

    function runCode(cod1) {

      var codeValue = cod1.value;

      if (codeValue != "") {

            //pageURL 为子窗口路径, name为子窗口句柄, parameters为窗口参数(各参数用逗号分隔)

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

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

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

          newwin.document.close();

      }

    }

    function getByClass(oParent, sClass,bool){

      var aResult=[];

      if(bool){

        var aEle=document.getElementsByTagName(oParent);

      }else{

        var aEle=oParent.getElementsByTagName('*');

      }

      for(var i=0;i<aEle.length;i++){

        if(aEle[i].className==sClass){

          aResult.push(aEle[i]);

        }

      }

      return aResult;

    }



    // 或者使用jquery

    /*

        新窗口运行代码js

    */

    /*

     $(function(){

       $('.run-code').click(function(){

         var codeVessel=$(this).parent().find('.code-vessel').val();

         runCode(codeVessel);

       });

       function runCode(cod1) {

         if (cod1 != "") {

               //pageURL 为子窗口路径, name为子窗口句柄, parameters为窗口参数(各参数用逗号分隔)

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

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

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

            newwin.document.close();

         }

       }

     })();

    */

  </script>

</body>

</html>


发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容