묻고답하기
jquery.js 불러오는 코드 질문이요
2012.06.13 22:20
일반 레이아웃과 모바일 레이아웃을 함께 사용할 수 있는 레이아웃을 만들었어요,
모바일은 기본적으로 jQuery를 불러오지 않기 때문에, jquery.js를 최상단에 불러오려고 해요.
XE1.5부터 지원하는 CDN이 가능하도록 하기 위해 아래 코드를 만들었어요.
<!--@if(class_exists(Mobile) && Mobile::isFromMobilePhone())-->
<block cond="__DEBUG__">{@ Context::loadFile("./common/js/jquery.js", true, '', -100005) }</block>
<block cond="!__DEBUG__">{@ Context::loadFile("./common/js/jquery.min.js", true, '', -100005) }</block>
<!--@end-->
(ps. 참고로 addJsFile로 하면 CDN지원이 안되네요.)
그런데 일반적인 경우에 문제가 없는데,
모바일 게시판 스킨을 함께 사용하면 아래와 같이 모바일 스킨에서 js 불러오는 코드가 있어 위의 레이아웃에서 사용하는 jquery가 최하단으로 밀리게 되고 제이쿼리가 먼저 로딩되지 않아 문제가 발생하게 되요.
{@ 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) }
저 뒤에 붙은 숫자가 순위를 조절하는 걸로 생각하고 있는데 loadFile 을 사용한 곳에서는 아무리 변화해도 순번을 변화시킬수가 없어요ㅠ.ㅠ
이 코드가 잘못된 것인지, XE에서 해결이 안되는 지 문제인지 궁금합니다.
아니면 어떻게 해야 원하는 조건(1. CDN가능할 것, 2. XE1.4에서 호환될 것, 3. jquery.min.js를 최상위로 올릴 것 4. __DEBUG__가 없으면 jquery.js를 불러오지 못하게 할 것)을 다 충족시킬 수 있을까요?
답변해주시면 정말 감사하겠습니다 ㅠ.ㅠ
BNU님 도움으로 해결했습니다!
참조글 : http://www.xpressengine.com/freeboard/20882490
아래처럼 하면 될 거 같아요~
BNU님께 다시 한 번 감사드립니다~
-----
<!--@if(class_exists(Mobile) && Mobile::isFromMobilePhone())-->
<load cond="__DEBUG__" target="../../common/js/jquery.js" usecdn="true" index="-100006" />
<load cond="!__DEBUG__" target="../../common/js/jquery.min.js" usecdn="true" index="-100006" />
<!--@end-->