포럼

글을 내리려 했으나 혹시 다른분들께 도움이 될까 하여 남겨둡니다.

 

 

선행조건>>

jquery.min.js 를 compressed 되지 않은 jquery.js로 교체해주세요.
xe.min.js를 xe.js로 교체해주세요.
 
교체방법>>
기존의 jquery.min.js를 삭제후 jquery.js를 jquery.min.js로 이름 변경해주세요.
기존의 xe.min.js를 삭제 후 xe.js 를 xe.min.js로 이름 변경해주세요.
 
이들은 /common/js 에 있습니다.

오류1. a.browser.msie 가 undefined 인 오류

수정방법 : jquery.min.js 에 아래 코드 추가

jQuery.browser = {};
(function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
})();

 

2. 댓글 안달릴때 오류 메세지에 inArray라는 단어가 있으면..

xe.min.js에 존재합니다. _cast 메서드를 아래와 같이 바꿔줍니다.

_cast : function(sender, msg, params) {
var i, len;
var aMsg = this._messages;

msg = msg.toUpperCase();

// BEFORE hooker
if (aMsg['BEFORE_'+msg] || this['API_BEFORE_'+msg]) {
var bContinue = this._cast(sender, 'BEFORE_'+msg, params);
if (!bContinue) return;
}

// main api function
var vRet = [], sFn = 'API_'+msg;
if (Array.isArray(aMsg[msg])) {
for(i=0; i < aMsg[msg].length; i++) {
if(typeof aMsg[msg][i] === "function"&&typeof aMsg[msg][i] !== "undefined "){
vRet.push( aMsg[msg][i](sender, params) );
}
}
}
if (vRet.length < 2) vRet = vRet[0];
// AFTER hooker
if (aMsg['AFTER_'+msg] || this['API_AFTER_'+msg]) {
this._cast(sender, 'AFTER_'+msg, params);
}
//alert(msg+"::"+params);
if (!/^(?:AFTER|BEFORE)_/.test(msg)) { // top level function
return vRet;
} else {
if(typeof vRet=='undefined'){
return true;
}else{
if(vRet.indexOf(false)<0){
return true;
}else{

return vRet;
}
}

}
}

jquery의 inArray 함수를 쓰니 오류가 나서 js의 indexOf함수로 바꿔줍니다.

 

3. matchExpr[type].exec is not a function 오류가 있으시면..

jquery.min.js를 엽니다.

xe jquery 기준으로 라인 2300~2310 근처에서 발생합니다.

for(type in Expr.filter){

밑에줄에

if(typeof matchExpr[ type ] !=RegExp){
matchExpr[ type ] = new RegExp(matchExpr[ type ]);
}

위 코드를 추가해서 RegExp type이 아니면 강제로 형(type)

변환을 시켜줍니다.

4. JSON Parse error: Unexpected identifier "function"

 
대개 jquery.min.js 9069번째 라인에서 발생합니다.
 
9069번째 라인은 아래와 같습니다.
jQuery.parseJSON = function( json ) {
 
    return oldParseJSON.apply( this, arguments );
};

 

아래와 같이 코드를 변경하여 json 데이터를 출력해봅니다.
jQuery.parseJSON = function( json ) {
    alert(JSON.stringify(json));
    return JSON.parse(json);
};
 
 
 
fuckyou2.PNG
문제의 부분은 따옴표에 둘러쌓이지 않는 function()~~~ 부분입니다.
즉..
"_presence:":function (){for(var a in this)return!1;return!0}
부분 통째로 문제가 발생하는 부분인것입니다.
 
alert에 찍힌 function()~~ 부분을 띄어쓰기 포함 토씨하나 틀리지 않게 적어두세요.
 
 
jQuery.parseJSON = function( json ) {
if(typeof json!="string"){
        json = String(json);
    }
    json = json.replace(',"_presence":function (){for(var a in this)return!1;return!0}','');
 
 
    return JSON.parse(json);
};

 

json = json.replace('아까 적어둔 function()부분','');

을..

return 문 바로 앞줄에 적어줍니다.

태그 연관 글
  1. [2019/04/14] 묻고답하기 sql 쿼리 질문 by 초보개
  2. [2019/04/03] 묻고답하기 회원가입 select 폼 형식 입력값 불러오기 질문 by 이퓨
  3. [2017/03/15] 묻고답하기 휴대폰 전화번호 오류 by 뒤늦게입문