使用eval导致Google Closure Compiler压缩代码后运行出错的解决办法
2009-12-10 00:00:00 来源:WEB开发网核心提示:最近在搞一些javascript的东西,由于系统完全是基于配置文件的,使用eval导致Google Closure Compiler压缩代码后运行出错的解决办法,所以一些javascript的函数名或者函数代码直接写在了配置文件当中,//配置好的方法名varfuncName="func1";//写好
最近在搞一些javascript的东西,由于系统完全是基于配置文件的,所以一些javascript的函数名或者函数代码直接写在了配置文件当中。
//配置好的方法名
var funcName="func1";
//写好的方法
function func1(s){
alert(s);
}
也可能是配置为:
var funcName="function(s){alert(s);}";
在调用的地方
var str="Hello!";
eval("("+funcName+")(str)");
正常调用没有问题,如果使用Compiler压缩后,因为str变量已经被改名,所以eval会出错。
改用:
//var f=eval("(" + funcName + ")");
var f=eval("(function() {return (" + funcName + ");})()");
f.call(this,str);
解决问题。
在chrome/firefox/opera下,直接用 eval("(" + funcName + ")") 可返回function对象,而IE下会返回 undefined 。
用 eval("(function() {return (" + funcName + ");})()"); 解决兼容性问题。
[]
- ››使用脚本恢复WinXP系统的用户登录密码
- ››导致网站排名滑落的八大原因分析
- ››使用phpMyadmin创建数据库及独立数据库帐号
- ››使用Zend Framework框架中的Zend_Mail模块发送邮件...
- ››使用cout标准输出如何控制小数点后位数
- ››使用nofollow标签做SEO的技巧
- ››使用 WebSphere Message Broker 的 WebSphere Tra...
- ››使用SQL Server事件探查器做应用程序的性能分析
- ››使用SQL Server事件探查器分析死锁原因
- ››使用纯文本文件打造WCF服务
- ››使用 Dojo 开发定制 Business Space 小部件,第 4...
- ››使用 ADDRESS 与 INDIRECT函数查询信息
更多精彩
赞助商链接