YUI Compressor压缩失效的场景-eval和with
一、官方文档的说明
in the face of evil features such as eval or with, the YUI Compressor takes a defensive approach by not obfuscating any of the scopes containing the evil statement
传送门:官方文档
翻译成中文就是说:eval和with语句所处的作用域,YUI Compressor是不进行压缩混淆单词的。
二、普通代码测试
1)源代码
function testCompressor(){
// 测试YUI Compressor
var person = {
'name':'wall',
'jser':true
};
console.log("my name is "+ person.name);
}
2)压缩后重新格式化的代码
function testCompressor() {
var a = {
name: "wall",
jser: true
};
console.log("my name is " + a.name)
};
三、含有eval代码测试
1)源代码
function testCompressor(){
// 测试YUI Compressor
var person = {
'name':'wall',
'jser':true
};
console.log("my name is "+ person.name);
eval("console.log(\"I am Jser\");");
}
2)压缩后重新格式化的代码
function testCompressor() {
var person = {
name: "wall",
jser: true
};
console.log("my name is " + person.name);
eval('console.log("I am Jser");')
}
结论:只要eval存在的作用域,代码都无法做混淆操作。
四、解决方案
既然无法改变这个规则,那就要尽量去避免代码中直接出现eval。可以讲eval封装起来调用。
1)源代码
function testCompressor(){
// 测试YUI Compressor
var person = {
'name':'wall',
'jser':true
};
console.log("my name is "+ person.name);
myEval("console.log(\"I am Jser\");");
}
function myEval(data){
return eval(data);
}
2)压缩后重新格式化的代码
function testCompressor() {
var a = {
name: "wall",
jser: true
};
console.log("my name is " + a.name);
myEval('console.log("I am Jser");')
}
function myEval(data) {
return eval(data)
}
3)另一种解决方式: 改为window["eval"]进行调用
function testCompressor(){
// 测试YUI Compressor
var person = {
'name':'wall',
'jser':true
};
console.log("my name is "+ person.name);
window["eval"]("console.log(\"I am Jser\");");
}
with 也适用上述的解决方案
YUI Compressor压缩失效的场景-eval和with的更多相关文章
- YUI Compressor 压缩 JavaScript 原理-《转载》
YUI Compressor 压缩 JavaScript 的内容包括: 移除注释 移除额外的空格 细微优化 标识符替换(Identifier Replacement) YUI Compressor包括 ...
- 使用雅虎YUI Compressor压缩JS过程心得记录
对待发布的项目进行测试时,发现js下载量比较大,从jquery的min版想到了压缩项目中的js文件.很简单的google之(在此,强调一下google的重要性),搜到一个叫做YUI Compresso ...
- YUI Compressor是如何压缩JS代码的?
YUI Compressor 压缩 JavaScript 的内容包括: 移除注释 移除额外的空格 细微优化 标识符替换(Identifier Replacement) YUI Compressor 包 ...
- YUI Compressor JS和CSS压缩工具使用方式(使用前安装JDK)
压缩测试: 选中 test.js, 执行右键菜单“Process with &YUICompressor”,会生成 test-min.js. 注意事项: 1. 需要安装 JDK >= 1 ...
- 【转载】Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS
在开发中编写的js.css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担.这就得每次发版本的时候,对js.js进行压缩,然后再发布.有没有什么办法,让代码到了服务器上边,它自己进行压缩 ...
- C#Css/Js静态文件压缩--Yui.Compressor.Net
一.Asp.Net 自带静态文件压缩工具包 Microsoft.AspNet.Web.Optimization http://www.nuget.org/packages/Microsoft.AspN ...
- 给YUI Compressor添加右键命令,完成快捷压缩
YUI Compressor默认不带右键安装功能 YUI Compressor非常好用,特别是JS的混淆是众多JS Coding的最爱.可惜官网提供的版本都不具备右键功能,每次压缩都要cmd输入一些命 ...
- Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css
网上压缩css和js工具很多,但在我们的系统中总有特殊的地方.也许你会觉得用第三方的压缩工具很麻烦.我就遇到了这样问题,我不想在本地压缩,只想更新到服务器上去压缩,服务器压缩也不用备份之类的操作.于是 ...
- phpstorm 安装 YUI Compressor 实 结合现自动压缩文件
YUI compressor 官方: http://yui.github.io/yuicompressor/ 下载的快速入口: https://github.com/yui/yuicompressor ...
随机推荐
- 因下面文的损坏或丢失windows/system32/config/system 解决方法
这是因为你电脑的初始化文件遭破坏所致.导致破坏的原因也可能是病毒或其它原因. 因为Windows启动须要读取Syatem.ini,Win.ini和注冊表文件,假设C盘根文件夹下有config.sys, ...
- Zend server最大化应用程序的性能、扩展性和可用性
如果我有8个小时去砍到一棵树,我会花6个小时磨斧子”——林肯(美国总统) 你可以知道? 世界页面访问量的峰值超过7000万每分钟. CloudFare公司服务器问题,导致785000站点崩溃一小时. ...
- 点击按钮,通过JS代码实现复制INPUT表单,表格:
获取表单: <SCRIPT LANGUAGE="JavaScript"> function copyinput() { var input=document.getEl ...
- 四个漂亮的CSS样式表
1. 单像素边框CSS表格 这是一个非经常常使用的表格样式. 源码: <!-- CSS goes in the document HEAD or added to your external s ...
- Tabs - 选项卡插件
接上篇Tabs - 选项卡插件 其中12)Yet (E)Another Tab Interface没有依赖任何javascript框架,以作补充 9)Flipping C ...
- 目前比较流行的Python科学计算发行版
经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Wi ...
- jquery水印插件:placeholder
jquery水印插件:placeholder 有的浏览器支持html5的水印placeholder(如Crome,firefox,ie10+),有的不支持html5的placeholder(ie9,i ...
- 理解对象模型图(Reading OMDS)
理解对象模型图(Reading OMDS) 引言 这篇文章大部分内容是翻译的帮助资料里的东西.学习技术,英语是个好工具.一直把英语的地位看得和技术一样重,也会强迫自己看英语版的技术书籍(都是PDF版的 ...
- revel框架教程之CSRF(跨站请求伪造)保护
revel框架教程之CSRF(跨站请求伪造)保护 CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山 ...
- LinqToXml高级用法介绍
LinqToXml高级用法介绍 一.函数构造 什么是函数构造?其是指通过单个语句构建XML树的能力. 那么它有什么作用呢? 作用1.用单个表达式快速创建复杂的XML树 见实例代码CreateXml( ...