Uncaught TypeError: Cannot read property 'init'
(Init is just funciton name that I made)
모든 화면에서 공통으로 참조하는 header영역에 이벤트를 줄 일이 생겼다. 이때 특정 페이지에서 사용하는 팝업을 띄워야 했는데, 그 특정 페이지가 아닌 경우에는 이벤트를 발생시키면 이 에러가 떴다. 원인은 참조할 팝업이 있는 페이지에서 parent객체로 js파일을 찾아갔기 때문이었다.
I had to set the event that showing layer popup that used in specific page on header field(every pages refer to header). but I got this error when I trigger that event on every pages except the specific page. The reason is just that specific page refer to js file with parent object, not importing js file like this :
<script type="text/javascript>
$(document).ready(function() {
parent.somethingObject.init();
});
</script>
solution :
그래서 parent객체로 js파일의 객체를 찾아가는 대신, JSP파일에 스크립트를 삽입했다.
So, I included script file on this JSP file like this :
<script type="text/javascript src="${contextPath}/resources/js/user/somejs.js">
<script type="text/javascript>
$(document).ready(function() {
somethingObject.init();
});
</script>
* 참고로 js가 다중으로 삽입된 경우에도 이러한 에러가 발생할 수 있다. 따라서 스크립트와 CSS파일을 관리하는 파일을 하나 생성하여 필요한 페이지에 삽입하는게 좋다. this error can be happens when js files imported multiple. So it is better to create file that manage javascript and CSS files. then including to pages in common.
댓글 없음:
댓글 쓰기