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>

これを試しましたが、結果が得られません。
これを行うことは不可能ですか、それとも間違っていますか?
前もって感謝します。

4

3 に答える 3

1

考えられる答えの 1 つ:

eval(/* some JS here */);

ただし、ユーザーが作成した任意の JS の実行を許可しているため、(場合によっては) やろうとしていることは危険である可能性があることに注意してください。

関連読書:

于 2012-11-02T00:46:18.357 に答える
1

eval メソッドは、渡された文字列を受け取り、それを実行しようとします。

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

「foo」を警告します。

于 2012-11-02T00:38:26.247 に答える
1

これを行うために邪悪な評価を使用する必要はありません。

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

       var userScript = new Function(d);
       userScript();
}
于 2012-11-02T00:40:36.943 に答える