728x90
반응형
넥사크로 -
아이폰(iPhone), 아이패드(iPad)에서
Safari(사파리) 브라우저로
파일 다운로드 시
"The string contains invalid characters." 오류 발생
현상
넥사크로로 개발된 사이트에 아이폰, 아이패드의 Safari(사파리) 브라우저로 파일 다운로드를 하면 "The string contains invalid characters." 라고 오류가 뜨면서 다운로드가 안된다.
해당 다운로드 안되는 현상은 조건이 있다.
첫번째, 아이폰 or 아이패드를 사용
두번째, 사파리 브라우저로 접속한 뒤 데스크탑 웹사이트 요청으로 변경한 상태
세번째, 넥사크로 FileDownTransfer 컴포넌트를 사용.
원인
저번에 올렸던 "넥사크로 - Mac Safari(사파리) 브라우저에서 파일 다운로드 안되는 현상"과는 다른 문제로
넥사크로 17.1은 SystemBase_HTML5.js, 넥사크로 N은 framework.js 파일의 nexacro._downloadTransferSubmit 함수가 문제로 보인다.
nexacro._BrowserVersion < 9 라고 체크하는 부분에서, 해당 nexacro_BrowserVersion의 값이 -1로 들어오면서 createElement("<IFRAME id='"... 이 부분이 실행되게 되는데 그때 The string contains invalid characters. 오류가 발생한다.
해결책
패치가 될것으로 보이지만.. 만약 시간이 없다면 그냥 아래처럼 고쳐서 쓰면된다.
개인적으로 패치를 기다리는것을 권장하는데.. 이유는 nexacro_BrowserVersion 값이 -1로 셋팅되었다면 nexacro_BrowserVersion < 9 로 체크해서 뭔가 처리하는 곳이 nexacro._downloadTransferSubmit 이 함수 말고도 엄청 많기 때문이다.
근데 패치가 나와도 걱정인게.. 넥사크로는 패치 나올때 마다 또 무슨 버그가 있을지 모르니..
nexacro._downloadTransferSubmit = function(_a, _b, _c, _d, _e) {
var _f = nexacro._managerFrameDoc;
if (_f) {
var _g;
var _h = _f.getElementById(_d + _b);
if (!_h) {
var _i = new Date().valueOf().toString();
_h = _f.createElement("FORM");
_h.id = _h.name = _d + _b;
if (_e) {
_h.method = _e;
} else {
_h.method = "POST";
}
if (nexacro._OS == "iOS") {
_h.target = "_blank";
} else {
_h.target = _i;
}
if (nexacro._BrowserVersion < 9) {
_g = _f.createElement("IFRAME");
_g.id = _g.name = _i;
} else {
_g = _f.createElement("IFRAME");
_g.id = _g.name = _i;
}
_h.appendChild(_g);
_f.body.appendChild(_h);
nexacro._observeSysEvent(_g, "load", "onload", _c);
}
...
}
728x90
반응형