我如何执行一些JavaScript是一个字符串?

function ExecuteJavascriptString()
{
    var s = "alert('hello')";
    // how do I get a browser to alert('hello')?
}

当前回答

使用eval函数,比如:

eval("my script here");

其他回答

eval(s);

但如果你从用户那里获取数据,这可能是危险的,尽管我想如果他们自己的浏览器崩溃了,那是他们的问题。

同时使用eval和创建一个新函数来执行javascript会带来很多安全风险。

const script = document.createElement("script");
const stringJquery = '$("#button").on("click", function() {console.log("hit")})';
script.text = stringJquery;
document.body.appendChild(script);

我更喜欢这个方法来执行我作为字符串接收的Javascript。

试试这个:

  var script = "<script type='text/javascript'> content </script>";
  //using jquery next
  $('body').append(script);//incorporates and executes inmediatelly

就我个人而言,我没有测试它,但似乎可以工作。

new Function('alert("Hello")')();

我认为这是最好的办法。

使用eval()。

W3学校评估之旅。网站有一些有用的例子的评估。Mozilla文档详细介绍了这一点。

你可能会得到很多关于安全使用的警告。不允许用户向eval()中注入任何东西,因为这是一个巨大的安全问题。

您还需要知道eval()具有不同的作用域。