执行以stringforms存储的JavaScript代码

如何执行一些string的JavaScript?

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

eval("my script here")function。

你可以使用一个函数来执行它。 例:

 var theInstructions = "alert('Hello World'); var x = 100"; var F=new Function (theInstructions); return(F()); 

eval函数将评估传递给它的string。

但是使用eval可能是危险的 ,所以谨慎使用。

编辑: annakata有一个好点 – 不仅是危险的 ,它是缓慢的 。 这是因为要评估的代码必须在现场进行parsing,因此需要一些计算资源。

使用eval()。

W3学校eval游览 。 网站有一些有用的eval的例子。 Mozilla文档详细介绍了这一点。

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

你也想知道eval()有不同的范围 。

尝试这个:

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

我个人没有testing它,但似乎工作。

使用eval如下。 应谨慎使用Eval,一个简单的search“ eval是邪恶的 ”应该抛出一些指针。

 function ExecuteJavascriptString() { var s = "alert('hello')"; eval(s); } 

检查了很多复杂和模糊的脚本:

 var js = "alert('Hello, World!');" // put your JS code here var oScript = document.createElement("script"); var oScriptText = document.createTextNode(js); oScript.appendChild(oScriptText); document.body.appendChild(oScript); 
 eval(s); 

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

有点像@Hossein Hajizadeh alerady说的,虽然更详细些:

有一个替代eval()

函数setTimeout()被devise为在毫秒的时间间隔之后执行某些事情,而要执行的代码恰好被格式化为一个string。

它会这样工作:

 ExecuteJavascriptString(); //Just for running it function ExecuteJavascriptString() { var s = "alert('hello')"; setTimeout(s, 1); } 

eval应该这样做。

 eval(s); 

不知道这是否作弊:

 window.say = function(a) { alert(a); }; var a = "say('hello')"; var p = /^([^(]*)\('([^']*)'\).*$/; // ["say('hello')","say","hello"] var fn = window[p.exec(a)[1]]; // get function reference by name if( typeof(fn) === "function") fn.apply(null, [p.exec(a)[2]]); // call it with params 

如果你想在特定的时间后执行特定的命令(即string) – cmd =你的代码 – InterVal =运行延迟

  function ExecStr(cmd, InterVal) { try { setTimeout(function () { var F = new Function(cmd); return (F()); }, InterVal); } catch (e) { } } //sample ExecStr("alert(20)",500); 
 eval(s); 

记住,这个eval是非常强大的,相当不安全。 您最好确信您正在执行的脚本是安全的,并且是用户不可变的。

新函数和apply()一起工作也

 var a=new Function('alert(1);') a.apply(null)