테스트 사이트 - 개발 중인 베타 버전입니다

include 시킨 자리 위치 변동 원인 학문적 궁금증? 채택완료

sinbi 3년 전 조회 2,365

G54 이상 버전에서, 위 링크의 설명대로 alarm.php를 앞에 인클루드 시키면,

alarm.php의 소스(아래참고)들이 기존 add_javascript() 함수로 인클루드시키는 스크립트보다 위로 올라가

(즉, 아래 소스들이 jquery-1.12.4.min.js 보다 앞에 인클루드 되어]

jQuery 관련 기능이 먹통이 됩니다. 

 

인클루드 시킨 자리인 바로 앞에 정상적으로 인클루드 시키려면 어떻게 해야 할까요?

alarm.php 파일의 CSS 및 JS를 add_ 형식으로 변경해도 나머지 소스들이 위로 올라가 제대로 작동 않더라구요.

 

PS. alarm.php 소스

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; //개별 페이지 접근 불가

// 간격

//echo help('기본 60000ms, 밀리초(ms)는 천분의 1초. ex) 60초 = 60000ms');

$wset['delay'] = '60000';

$wset['delay'] = (isset($wset['delay']) && $wset['delay'] >= 60000) ? $wset['delay'] : 60000;

$alarm_url = G5_PLUGIN_URL."/alarm";

?></p>

<p><?php 

//특정 페이지에서 alarm 표시안함 

$except_alarm_page = array('memo.php',

                    'point.php',

                    'response.php',

                    'follow.php',

                    'scrap.php',

                    'mypost.php',

                    'myphoto.php',

                    'shopping.php',

                    'coupon.php',

                    'memo_view.php',

                    'memo_form.php');

if (!in_array(basename($_SERVER['PHP_SELF']), $except_alarm_page)) 

{ 

    if ($member['mb_id'])

    {        

?></p>

<p><link rel="stylesheet" href="<?php echo $alarm_url ?>/alarm.css">

<script>

var memo_alarm_url = "<?php echo $alarm_url;?>";

var audio = new Audio("<?php echo $alarm_url;?>/memo_on.mp3");  // 임의 폴더 아래에 사운드 파일을 넣고 자바스크립트 동일경로 

</script>

<script src="<?php echo $alarm_url ?>/alarm.js"></script>

<script type="text/javascript">

    $(function() {

        setInterval(function() {

            check_alarm();

        }, <?php echo $wset['delay'] ?>);

        check_alarm();

    });

</script>

<?php } ?>

<?php } ?></p>

<p>

 

 

PS. add_javascript 함수

https://github.com/gnuboard/gnuboard5/blob/dbc8e1676a4cd3561a74f1d756320a7d82b45bb4/lib/common.lib.php#L2530

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

add_script()가 실제 처라 되는 부분을 보니

바로 앞에 넣는 듯한데

그렇다면, head.sub.php 이외에는 모두

add_script()를 써야 한다는 거네요.

                $add_version_str = (stripos($js[1], $http_host) !== false) ? '?ver='.G5_JS_VER : '';

                $js[1] = preg_replace('#\.js([\'\"]?>)<\/script>$#i', '.js'.$add_version_str.'$1', $js[1]);

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

엑스엠엘
3년 전
trick을 서보자면
alarm.php에서는
</script>
대신에
</script 공백>
이렇게 하면 어떨까요
s
sinbi
3년 전
경로 정의된 PHP 코드까지 고려하면 그냥 body 상단에 넣고 써야 할 것 같네요.
신경써 답변주셔서 감사합니다.
s
sinbi
3년 전
말씀하신 방법대로 모든 소스를 add_로 처리해버렸더니 정상 작동하네요.
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

 

alarm.php에서도 add_javascript() 를 사용하도록 하면 되지 않을까요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sinbi
3년 전
본문에 적은 것처럼, alarm.php에 있는 외부스크립트 2개를 말씀하신 방법으로 처리했더니,
해당 외부스크립트만 위치 바뀌고 나머지 코드들은 위로 올라가버려서 작동 않더라구요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인