eval函数是一种动态生成代码的强大而简单的方法,那么有什么警告呢?
我需要执行一些我从一些AJAX调用中获得的自定义JavaScript.我可以做一个eval字符串,或者我可以将它添加script到DOM 中的-tag中.哪种方法会更好?
var dynamicScript = 'alert(\'Hello world!\');';
Run Code Online (Sandbox Code Playgroud)
方法1 - 脚本:
var x = '<script type="text/javascript">' + dynamicScript +'</scr' + 'ipt>';
$(document.body).append(x);
Run Code Online (Sandbox Code Playgroud)
方法2 - 评估:
eval(dynamicScript);
Run Code Online (Sandbox Code Playgroud)
什么方法更好,为什么?还是有更好的选择?
我想知道是否有人可以解释使用Javascript的eval()和另一种方法之间的区别,比如使用JQuery创建脚本标记然后将该元素附加到页面:
eval(somecode);
Run Code Online (Sandbox Code Playgroud)
与
$("<script type='text/javascript'>"+somecode+"</script>").appendTo("head");
Run Code Online (Sandbox Code Playgroud)
不确定这是否相关,但这里是上下文:我正在使用Drupal Popups模块的一个版本,其基本目的是通过AJAX整个页面请求轻松将常规链接转换为弹出窗口并将其附加到页面中一个模态窗口.这通常包括外部CSS和Javascript文件.为了提高所有这些AJAX加载的性能,我转而使用AJAX排队,并将外部脚本的eval()更改为列出的替代方案.但是,这会在其他各个页面上引发零星的Javscript错误.