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);
}
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);
}
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;
}
}
$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
6
댓글 5개
멋집니다.
이 부분에 대하여 많이 고민했는데 멋진 결과물이네요~ ^^
이걸 hook을 이용할 수 있다면 코어 수정 없이 가장 좋은 방법일텐데 그 부분을 더 연구해봐야겠습니다.
이 부분에 대하여 많이 고민했는데 멋진 결과물이네요~ ^^
이걸 hook을 이용할 수 있다면 코어 수정 없이 가장 좋은 방법일텐데 그 부분을 더 연구해봐야겠습니다.
오... 멋진 아이디어인데요? ^^
오우 이렇게도하네요 감사합니다
요새 트렌드는 javascript를 </body> 앞에 두는게 많더라구요.
또, PHP 코드 중간에 <script>...</script> 이런것도 절대 두지 않구요.
javascript를 뒤에 두자니,
newwin.inc.php 하단에 있는 javascript 소스들 같은 아이들이 항상 에러가 나는 상황이 발생하니,
그때마다 난감합니다.
트리플님은 어떻게 해결하셨는지 궁금해서 댓글 남겨보아요.
또, PHP 코드 중간에 <script>...</script> 이런것도 절대 두지 않구요.
javascript를 뒤에 두자니,
newwin.inc.php 하단에 있는 javascript 소스들 같은 아이들이 항상 에러가 나는 상황이 발생하니,
그때마다 난감합니다.
트리플님은 어떻게 해결하셨는지 궁금해서 댓글 남겨보아요.
좋은 팁 감사합니다