오픈 소스 프로젝트 - XE 개발 포럼
글수 255
홈피 속도를 조금이라도 빠르게하려고 야후 컴프레서(http://developer.yahoo.com/yui/compressor/)를 이용해서 모든 js, css 파일들을 압축해보았는데 modules/widget/tpl/js/widget.js에서만 아래와 같이 파싱 에러가 나옵니다.
그래서 소스코드를 보니 float라는 키워드가 변수명으로 사용되고 있더군요.
이것은 브라우저 내장 파서에 따라 에러가 날 소지가 다분히 있으므로 변수명을 고치는 것이 좋을 것 같습니다.
저는 아래 패치파일처럼 float변수명을 cssfloat로 고쳤습니다.
참고하시기 바랍니다.
참고문헌
[1] Java Script Reserved Words (http://javascript.about.com/library/blreserved.htm)
[ERROR] 35:14:missing variable name
[ERROR] 36:14:identifier is a reserved word
[ERROR] 37:17:identifier is a reserved word
[ERROR] 727:14:missing variable name
[ERROR] 728:14:identifier is a reserved word
[ERROR] 735:17:identifier is a reserved word
[ERROR] 757:17:identifier is a reserved word
[ERROR] 1:0:Compilation produced 7 syntax errors.
org.mozilla.javascript.EvaluatorException: Compilation produced 7 syntax errors.
at com.yahoo.platform.yui.compressor.YUICompressor$1.runtimeError(YUICompressor.java:143)
at org.mozilla.javascript.Parser.parse(Parser.java:402)
at org.mozilla.javascript.Parser.parse(Parser.java:347)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:532)
at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:120)
[ERROR] 36:14:identifier is a reserved word
[ERROR] 37:17:identifier is a reserved word
[ERROR] 727:14:missing variable name
[ERROR] 728:14:identifier is a reserved word
[ERROR] 735:17:identifier is a reserved word
[ERROR] 757:17:identifier is a reserved word
[ERROR] 1:0:Compilation produced 7 syntax errors.
org.mozilla.javascript.EvaluatorException: Compilation produced 7 syntax errors.
at com.yahoo.platform.yui.compressor.YUICompressor$1.runtimeError(YUICompressor.java:143)
at org.mozilla.javascript.Parser.parse(Parser.java:402)
at org.mozilla.javascript.Parser.parse(Parser.java:347)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:532)
at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:120)
그래서 소스코드를 보니 float라는 키워드가 변수명으로 사용되고 있더군요.
이것은 브라우저 내장 파서에 따라 에러가 날 소지가 다분히 있으므로 변수명을 고치는 것이 좋을 것 같습니다.
저는 아래 패치파일처럼 float변수명을 cssfloat로 고쳤습니다.
Index: widget.js
===================================================================
--- widget.js (revision 29)
+++ widget.js (working copy)
@@ -30,11 +30,11 @@
return style;
}
-// float: 값을 구하는게 IE랑 그외가 다름
+// cssfloat: 값을 구하는게 IE랑 그외가 다름
function getFloat(obj) {
- var float = xIE4Up?obj.style.styleFloat:obj.style.cssFloat;
- if(!float) float = 'left';
- return float;
+ var cssfloat = xIE4Up?obj.style.styleFloat:obj.style.cssFloat;
+ if(!cssfloat) cssfloat = 'left';
+ return cssfloat;
}
function setFloat(obj, fl) {
if(xIE4Up) obj.style.styleFloat = fl;
@@ -724,15 +724,15 @@
var pWidth = xWidth(tobj.parentNode);
- var float = getFloat(tobj.parentNode);
- if(!float) float = 'left';
+ var cssfloat = getFloat(tobj.parentNode);
+ if(!cssfloat) cssfloat = 'left';
// 위젯 리사이즈 (우측)
if(tobj.className == 'widgetResize' || tobj.className == 'widgetBoxResize') {
if(nx < sx+minWidth) nx = sx+minWidth;
if(nx > zoneRight) nx = zoneRight;
- if(float == 'right') nx = sx + pWidth;
+ if(cssfloat == 'right') nx = sx + pWidth;
var new_width = nx - sx;
if(new_width < minWidth) new_width = minWidth;
@@ -754,7 +754,7 @@
if(nx < zoneLeft) nx = zoneLeft;
- if(float == 'left') nx = sx;
+ if(cssfloat == 'left') nx = sx;
var new_width = pWidth + (sx - nx);
if(new_width < minWidth) new_width = minWidth;
===================================================================
--- widget.js (revision 29)
+++ widget.js (working copy)
@@ -30,11 +30,11 @@
return style;
}
-// float: 값을 구하는게 IE랑 그외가 다름
+// cssfloat: 값을 구하는게 IE랑 그외가 다름
function getFloat(obj) {
- var float = xIE4Up?obj.style.styleFloat:obj.style.cssFloat;
- if(!float) float = 'left';
- return float;
+ var cssfloat = xIE4Up?obj.style.styleFloat:obj.style.cssFloat;
+ if(!cssfloat) cssfloat = 'left';
+ return cssfloat;
}
function setFloat(obj, fl) {
if(xIE4Up) obj.style.styleFloat = fl;
@@ -724,15 +724,15 @@
var pWidth = xWidth(tobj.parentNode);
- var float = getFloat(tobj.parentNode);
- if(!float) float = 'left';
+ var cssfloat = getFloat(tobj.parentNode);
+ if(!cssfloat) cssfloat = 'left';
// 위젯 리사이즈 (우측)
if(tobj.className == 'widgetResize' || tobj.className == 'widgetBoxResize') {
if(nx < sx+minWidth) nx = sx+minWidth;
if(nx > zoneRight) nx = zoneRight;
- if(float == 'right') nx = sx + pWidth;
+ if(cssfloat == 'right') nx = sx + pWidth;
var new_width = nx - sx;
if(new_width < minWidth) new_width = minWidth;
@@ -754,7 +754,7 @@
if(nx < zoneLeft) nx = zoneLeft;
- if(float == 'left') nx = sx;
+ if(cssfloat == 'left') nx = sx;
var new_width = pWidth + (sx - nx);
if(new_width < minWidth) new_width = minWidth;
참고하시기 바랍니다.
참고문헌
[1] Java Script Reserved Words (http://javascript.about.com/library/blreserved.htm)
- css,
- js,
- compressor,
- 압축,
- 버그




소중한 피드백 감사합니다.
http://trac.zeroboard.com/trac/ticket/443
에 티켓 등록해 놓았고 1.0.2 이전에 개선할 수 있도록 하겠습니다.
감사합니다.