我能在JavaScript中运行JavaScript吗?

3

可能是重复问题:
有没有可能在浏览器中隔离运行的JavaScript?

我想让用户能够像这样在文本区域内输入JavaScript代码:

<!DOCTYPE html>
  <html>
    <head>
      <script>
        function lapzwans()
        {
          var d = document.getElementById("area").value;
          document.getElementById("blahblah").innerHTML = d;
        }
      </script>
    </head>
  <body>
    <h1>Javascript in Javascript</h1>
    <p>This experiment attempts to launch a script from another script.</p>
    <p>Enter your script in the text area</p>
    <textarea type="text" id="area"></textarea>
    <button onclick="lapzwans()">Click here</button>
    <p id="blahblah"></p>
    <p id="deegroller">Make this text green</p>
  </body>
</html>

我尝试过这个方法,但是没有得到结果。
是不可能完成这个任务呢,还是我的操作有误?
谢谢您提前的帮助。


5
使用eval()函数来运行JavaScript代码,而不仅仅将其作为纯文本放置。 - deb0rian
1
@Fratyr请不要建议危险的习惯。 - Daedalus
2
被问到了一个危险的习惯问题。使用JavaScript,您可以在控制台中运行任何代码,而无需使用所有者提供的eval函数。 - deb0rian
@Daedalus eval()是一个实际的答案。无论是否危险,对于这个问题来说,它都是一个答案。 - Whymarrh
3个回答

1

eval方法会接受传递给它的任何字符串并尝试运行它。

eval("alert('foo')");

将会触发“foo”警报;


1

您不需要使用邪恶的 eval 来完成这个任务。

function lapzwans()
{
       var d=document.getElementById("area").value;
       document.getElementById("blahblah").innerHTML=d;

       var userScript = new Function(d);
       userScript();
}

3
这与 eval() 在任何实际用途上有何不同? - millimoose
完全不是,向某人展示两种错误的做法并没有什么问题。 - Reza Assar
1
这没有什么问题。我反对称呼eval()为邪恶,然后做同样基本的事情。 - millimoose
1
称呼 eval 为 evil 只是一种讽刺。他的问题是关于 eval 的定义。例如(“不要杀他,而是谋杀他”)。 - Reza Assar
谢谢,但这对我不起作用。然而邪恶的 eval 运行良好。 - David Leegwater

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接