물어보기XpressEngine

 보안패치 후 해당 애드온에서 출력해주는 부분이 모바일에서 동작하지 않아 일반 문자로 출력됩니다.

링크도 안걸리고 글자효과도 적용되지 않구요. 

 

*PC는 정상출력되는데 모바일에서만 정상출력이 안되고 있네요.

 

 

 

https://www.xpressengine.com/index.php?mid=download&package_id=22753681

  • profile
    웹지기 2017.09.12 18:20:02
    관련이 있는 에러인지 모르겠지만 남겨 보겠습니다.
    Uncaught TypeError: window.XE.isSameHost is not a function xe.min.js?20170912151510:6
  • profile
    웹지기 2017.09.12 18:24:32
    window.XE.isSameHost(c)){var e=b.attr("

    에러 클릭해보면 위 내용 중 windo커서깜빡w 이렇게 가리키고 있네요.
  • profile
    기진곰 2017.09.12 18:41:59

    이곳의 조건을 if(true)로 바꾸어서 압축된 파일이 아닌 개별 파일이 각각 로딩되도록 해보세요. xe.min.js처럼 여러 스크립트를 하나로 합쳐 압축해 놓은 파일은 디버깅하기가 너무 힘들어서요...

  • profile
    웹지기 2017.09.12 18:44:43
    if(true) 이렇게 바꿔서 에러를 보라는 거죠?
  • profile
    웹지기 2017.09.12 18:52:57
    고쳐도 min.js 를 불러오네요. debug 세팅도 해야 될까요?
  • profile
    웹지기 2017.09.12 18:56:54

    VM5807 common.js?20170912151510:155Uncaught TypeError: Cannot read property 'noConflict' of undefined(anonymous function) @ VM5807 common.js?20170912151510:155(anonymous function) @ VM5807 common.js?20170912151510:156 VM5807 common.js?20170912151510:141Uncaught TypeError: window.XE.URI is not a function

  • profile
    웹지기 2017.09.12 18:58:05
    155 라인 : $.extend(window.XE, URI.noConflict(true));
    141번 라인 : var base_url = window.XE.URI(window.request_uri).normalizePort().normalizePathname();
  • profile
    기진곰 2017.09.12 19:20:31
    아까 링크해 드린 파일에서 392~402줄이 웹지기님 사이트에 있는 버전과 동일한지 확인해 주세요. URI.js와 blankshield.js를 로딩해야 하는데 로딩하지 않고 있네요.
  • profile
    웹지기 2017.09.12 19:25:22

    if(true)
    {
    $oContext->loadFile(array('./common/js/jquery-1.x.js', 'head', 'lt IE 9', -111000), true);
    $oContext->loadFile(array('./common/js/jquery.js', 'head', 'gte IE 9', -110000), true);
    $oContext->loadFile(array('./common/js/modernizr.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/x.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/URI.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/blankshield.min.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/common.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/js_app.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/xml2json.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000), true);



    PC에서는 문제가 없습니다. 모바일보기에서 문제가 생깁니다.

    (PC버전에서는 말씀 하신 파일이 로딩이 되는게 소스보기에서 보입니다.)

  • profile
    기진곰 2017.09.12 19:42:08
    이제 보니 모바일에서 적용되는 부분은 그 밑에 465~482줄인데, 거기서 URI.js와 blankshield.min.js가 누락되어 있군요. 압축 파일을 사용하지 않는 상태에서는 에러가 나는 것이 당연합니다 ㅠㅠ

    그런데 아까는 압축 파일을 사용했는데도 에러가 났지요? 그건 무엇 때문인지 모르겠네요. 혹시 모바일에서 ZipperUpper! 애드온을 켜놓으셨나요?
  • profile
    웹지기 2017.09.12 19:43:15
    네. 압축사용해도 마찬가지였구요. 저희는 애드온 사용하지 않아요.
  • profile
    기진곰 2017.09.12 19:48:51
    일단 압축파일을 사용하지 않는 상태에서 396~397 두줄을 복사하여 467줄 이후에 붙여넣어 보세요. 이게 누락되었다는 점을 XE 개발팀에 전달해 드렸습니다.

    압축 상태에서 왜 문제가 생기는지는 좀더 살펴봐야겠지만, 순정 상태의 XE에서는 괜찮은 것으로 보아 특정 애드온이나 모바일 레이아웃, 스킨 등과 충돌하는 것 같습니다.
  • profile
    웹지기 2017.09.12 19:50:21
    방금 그렇게 해 보았는데 안되네요. blankshield.min.js 가 맞나요 ?
  • profile
    기진곰 2017.09.12 19:51:24
    그거랑, 그 위에 URI.js도 마찬가지로요.
  • profile
    웹지기 2017.09.12 19:53:49
    모바일에서는 여전히 두 파일을 못불러 옵니다.
  • profile
    기진곰 2017.09.12 19:54:16
    로딩 순서가 틀리네요... common.js보다 먼저 로딩되어야 하는데요.
  • profile
    웹지기 2017.09.12 19:56:01
    아. 그러네요. 밑에 있네요.
  • profile
    기진곰 2017.09.12 19:58:58
    위에 넣으셨는데도 밑에 나온 건가요?
  • profile
    웹지기 2017.09.12 20:00:03
    아까 넣으라고 하신 그 곳에 넣었습니다.
    $oContext->loadFile(array('./common/js/jquery.js', 'head', '', -110000), true);
    $oContext->loadFile(array('./common/js/modernizr.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/x.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/URI.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/blankshield.min.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/common.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/js_app.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/xml2json.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000), true);
    $oContext->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000), true);
  • profile
    기진곰 2017.09.12 20:03:57

    이상하네요. XE는 마지막 숫자가 같으면 집어넣은 순서대로 정확하게 나오는데....

    페이지에 포함된 스크립트 순서를 조정하거나 재압축하거나 그 밖에 어떤 형태로든 최적화를 시도할 만한 기능은 또 없나요? 예전에 아파치에 뭔가 추가해서 열심히 최적화하셨던 것으로 기억하는데요.

  • profile
    웹지기 2017.09.12 20:06:12
    아니요. 없어요. 예전에 압축하는거 쓰려다가 자원을 너무 많이 소모시켜서 바로 사용 안했습니다.
  • profile
    기진곰 2017.09.12 20:09:56

    희한하네요. 목록에 있는 파일 10개 중 첫번째 -110000은 -120000으로, 2~5번째 -100000은 -110000으로 바꾸고 나머지 5개는 그대로 둬보세요. 강제로 한번 맞춰보죠...

  • profile
    웹지기 2017.09.12 20:14:21
    네. 그렇게 하면 정상적으로 됩니다.
  • profile
    기진곰 2017.09.12 20:13:53
    아, 무엇 때문인지 알 것 같습니다. 사용하시는 모바일 레이아웃이나 모바일 스킨에서 jquery.js, xe.js 등을 강제로 로딩하고 있나봐요. 그러니까 순서가 꼬이는 거겠지요...
  • profile
    웹지기 2017.09.12 20:15:08
    <load target="../../common/js/jquery.min.js" usecdn="true" index="-100006" />

    이런부분이 있습니다. 레이아웃에서요.
  • profile
    기진곰 2017.09.12 20:19:35

    그 부분이 문제일 수도 있지만, 만약 jquery.min.js뿐이라면 여전히 뭔가 이상해요. 코어에서 로딩하지 않는 xe.js도 중간에 막 껴있고, js_app.js 로딩 순서도 약간 다르고요.

    최근 버전의 XE에서는 PC와 모바일 모두 대부분 동일한 스크립트들을 로딩해 주는데, 스마트폰 초창기에는 로딩 속도 때문에 모바일에서 일부 스크립트를 제외시켰기 때문에 모바일 레이아웃이나 스킨을 작성하시는 분들이 강제로 로딩하는 경우가 많습니다. 이게 순서가 약간씩 다른 것 같아요.

  • profile
    웹지기 2017.09.12 20:21:30
    저거 딱 하나밖에 없어요. 저거 주석처리하고 원래대로 해봤는데 순서가 다시 맞지 않아 이상이 생기네요.
  • profile
    기진곰 2017.09.12 20:22:35
    메인화면에서는 괜찮은 것으로 보아 레이아웃보다는 게시판 스킨이 문제인 것 같습니다.
  • profile
    웹지기 2017.09.12 20:26:58

    찾았습니다.
    list.hmtl 파일에
    {@ Context::addJsFile("./common/js/jquery.js", true, '', -100000) }
    {@ Context::addJsFile("./common/js/js_app.js", true, '', -100000) }
    {@ Context::addJsFile("./common/js/common.js", true, '', -100000) }
    {@ Context::addJsFile("./common/js/xml_handler.js", true, '', -100000) }
    {@ Context::addJsFile("./common/js/xml_js_filter.js", true, '', -100000) }

    이렇게 많이 불러옵니다.

     

    지워야 할 것 좀 알려주세요.

  • profile
    기진곰 2017.09.12 20:29:12
    5개 다 지우세요. 모두 코어에서 기본으로 로딩해 주는 파일들입니다.
    write_form, comment_form 쪽에 더 있을 가능성도 있습니다.
  • profile
    웹지기 2017.09.12 20:29:32
    거기도 있어요. 다 지워도 되나요?
  • profile
    기진곰 2017.09.12 20:32:01
    네, 동일한 파일 5개가 세트로 나온다면 다 지우셔도 됩니다.
  • profile
    웹지기 2017.09.12 20:32:12

    코어에 코드 누락 + 저희 스킨 문제네요. 누락된거 추가해서 일단 급한대로 제가 압축해서 운영하겠습니다.

    아.. 수정된게 압축해서 사용하는 파일이 아니군요. 정신이 없네요 ㅋㅋ

     

    도움 감사합니다.

  • profile
    기진곰 2017.09.12 20:34:17
    네, 스킨을 수정하셨다면 원래대로 압축파일로 운영하셔도 될 거예요.

    일부 모바일 스킨에서 문제가 생긴다고 개발팀에 알려드려야겠네요.
    라이믹스에서는 유주얼 서스펙트 5형제를 죄다 블랙리스트 걸어버렸습니다만
    XE에서는 그것보다는 좀더 온건한(?) 해결책을 찾아야겠지요...
  • profile
    웹지기 2017.09.12 20:38:24

    마지막으로 질문드릴게요. debug 모드를 해제하면 언급하신 두개 파일을 불러오지 않는건가요?

     

    아.. xe.min.js 에 모두 합친거군요!

  • profile
    기진곰 2017.09.12 20:40:31

    아까 압축파일에도 동일하게 누락된 거 아니냐고 물어보셔서 다시 확인해 봤는데 xe.min.js는 정상입니다. 엉뚱한 파일이 먼저 로딩되지만 않으면 이 파일 하나만 로딩되어도 괜찮아요.

  • profile
    웹지기 2017.09.12 20:03:54

    아.. 여기도 조건문을 바꿔 보겠습니다.

    debug 모드로 해놔서 그런지 조건은 의미가 없군요.

  • profile
    웹지기 2017.09.12 19:47:05
    압축파일에도 동일하게 누락되어 있는거 아닐까요?
  • profile
    기진곰 2017.09.12 19:49:53
    압축파일은 PC, 모바일 공통이라 한쪽이 정상이라면 다른 쪽도 정상이어야 해요.
  • profile
    웹지기 2017.09.12 19:51:01

    모바일에서 불러오는 부분이 압축파일에도 누락이 아니냐는 의견이었습니다.

  • profile
    웹지기 2017.09.12 20:46:30
    이 대화에서 언급된 모바일 게시판 스킨은 flatboard 스킨입니다. 모두 수정해주세요. 레이아웃에도 하나 불러오는게 있구요. 레이아웃과 보드스킨이 세트라서요.
  • profile
    웹지기 2017.09.13 08:39:49
    https://www.xpressengine.com/index.php?mid=download&package_id=18325662
    1.8.45 버전이 배포되었네요.

서버에 요청 중입니다. 잠시만 기다려 주십시오...