loading
반응형

제이쿼리(jQuery) 라이브러리와 다른 자바스크립트(javascript) 라이브러리를 동시 사용했을 때 둘 라이브러리 간에

충돌이 발생이 되어 오류가 나는 경험을 해봤을 거다.

 

이 둘 라이브러리 간에 충돌이 일어났을 때 해결 방법을 알아본다.

우선 대표적으로 옛날 자바스크립트 라이브러리인 prototype.js 와 jQuery 라이브러리를 사용하여

테스트를 진행해보자.

 

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  <script type="text/javascript">

  </script>
</head>
<body>
      <h1> 두 라이브러리 충돌 일어날 때 해결방법 테스트</h1>
</body>
</html>

 

위 HTML 코드를 살펴보자.

  <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>

 

 

두 개의 라이브러리를 불러온다. 그런데 이 HTML 문서는 시작할 때 오류가 발생이 된다.

자바스크립트 라이브러리인 prototype.js 에서 발생이 되는데

 

prototype.js 라이브러리에서 오류화면

 

이게 제이쿼리와 prototype.js 간에 충돌이 일어나서 즉, element.dispatchEvent 가 제이쿼리에서

사용하는데  prototype.js에선 없는 이벤트라 오류가 나는 거다

 

둘 다 $ 이 기호를 가지고 사용했기 때문에 충돌이 난다...

 

그럼 위 같은 충돌 상황을 해결하는 방법을 보자. 제이쿼리(jQuery)는 고맙게도 이렇게 라이브러리 간에

충돌이 일어날 때 해결할 수 있는 좋은 메서드를 지원을 해준다.

 

jQuery.noConflict(); // 충돌방지

 

 

이게 jQuery에서 다른 자바스크립트 라이브러리 간에 충돌을 방지할 수 있는 메서드인데

사용 방법을 알아보자.

 

반응형

 

충돌 방지 해결법

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
  <script type="text/javascript">
        var $jQ = jQuery.noConflict();
         $jQ(document).ready(function(){
            $jQ('h1').text('충돌방지 해결');
        });        
  </script>
</head>
<body>
      
</body>
</html>

 

위 HTML 코드를 봐 보자.

지금 jQuery.noConflict(); 이 메서드를 이용해서 새로운 변수 $jQ 에다가 할당에서 사용을 하고 있다.

 

즉, 기존 $ 이 기호 하나를 이용해서 제이쿼리를 이용했는데 충돌이 일어나니 $ 기호를 $jQ 이걸로 치환해서 사용을 하고 있다. 

 

자 다시 충돌 방지 해결 방법을 정리하자면

  1. 제이쿼리를 사용하기 전에 jQuery.noConflict() 이 메서드를 이용하여 $ 이 기호를 대처할만한 다른 변수에 저장.
  2. 다른 변수에 저장한 $jQ 변수를 제이쿼리 기호로 사용하면 된다.

이렇게 사용을 하면 문제없이 충돌을 방지하면서 두 라이브러리를 사용할 수 있다.

 

사용은 무조건 제이쿼리를 사용하기 전에 jQuery.noConflict() 이 메서드를 이용하여 새로운 변수를 지정하여 사용한다는 것에 유의하자.

 

 

반응형

+ Recent posts