javascript 위치를 </body> 태그전에 위치하게하기 > 그누보드5 팁자료실

그누보드5 팁자료실

javascript 위치를 </body> 태그전에 위치하게하기 정보

javascript 위치를 </body> 태그전에 위치하게하기

본문

 

javascript를 </body></html>태그전에 위치시킬 필요가 있을 경우

그누보드의 add_javascript()를 수정하지 않고 add_tail_javascript()를 추가해서 </body>태그전에 javascript를 위치하게 하는 방법입니다.

 

/lib/common.lib.php

1. add_javascript()다음에 아래 코드 삽입


function add_tail_javascript($javascript, $order=0)
{
    global $html_process;
    if(trim($javascript) && method_exists($html_process, 'merge_tail_javascript') )
        $html_process->merge_tail_javascript($javascript, $order);
}
2. merge_javascript()다음에 아래 코드 삽입

function merge_tail_javascript($javascript, $order)
{
    $tail_scripts = $this->tail_js;
        $is_merge = true;
        foreach($tail_scripts as $script) {
            if($script[1] == $javascript) {
                $is_merge = false;
                break;
            }
        }
        if($is_merge)
            $this->tail_js[] = array($order, $javascript);
}
3. run()... 부분
if(!empty($scripts)) {
...
}
하단에 아래코드 삽입

$tail_javascript = '';
$tail_scripts = $this->tail_js;
$php_eol = '';
unset($order);
unset($index);
if(!empty($tail_scripts)) {
    foreach ($tail_scripts as $key => $row) {
        $order[$key] = $row[0];
                $index[$key] = $key;
                $script[$key] = $row[1];
    }
    array_multisort($order, SORT_ASC, $index, SORT_ASC, $tail_scripts);
    $tail_scripts = run_replace('html_process_script_files', $tail_scripts);
    foreach($tail_scripts as $js) {
        if(!trim($js[1]))
                    continue;
                $js[1] = preg_replace('#\.js([\'\"]?>)<\/script>$#i', '.js?ver='.G5_JS_VER.'$1</script>', $js[1]);
                $tail_javascript .= $php_eol.$js[1];
                $php_eol = PHP_EOL;
    }
}
4. $buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript{$nl}$1", $buffer); 하단에 아래 코드 삽입

$nl = '';
if($tail_javascript)
    $nl = "\n";
$buffer = preg_replace('#(</body>[^<]*</html[^>]*>)#', "$tail_javascript{$nl}$1", $buffer);

 

사용방법은 add_javascript()와 같습니다.

<?php
add_tail_javascript('<script src="'.G5_JS_URL.'/jquery-1.12.4.min.js"></script>', 0);
?>
추천
6

댓글 5개

멋집니다.
이 부분에 대하여 많이 고민했는데 멋진 결과물이네요~ ^^
이걸 hook을 이용할 수 있다면 코어 수정 없이 가장 좋은 방법일텐데 그 부분을 더 연구해봐야겠습니다.
요새 트렌드는 javascript를 </body> 앞에 두는게 많더라구요.
또, PHP 코드 중간에 <script>...</script> 이런것도 절대 두지 않구요.

javascript를 뒤에 두자니,
newwin.inc.php 하단에 있는 javascript 소스들 같은 아이들이 항상 에러가 나는 상황이 발생하니,
그때마다 난감합니다.

트리플님은 어떻게 해결하셨는지 궁금해서 댓글 남겨보아요.
전체 2,427 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT