여지껏 웹개발을 할 때, 자바스트립트의 마임타입으로 text/javascript를 사용하였다.

그런데 프로젝트 중 다른 동료가 application/javascript로 쓴 것을 보고 ,


"이건 뭐지?"

"최근엔 자바스크립트 타입을 이렇게 써요"


해서 무작정 따라 썼었는데, 제대로 안알아보고 쓰다보니 결국 문제 발생! ㅎㅎㅎ

차이점은 다음과 같다.


1. text/javascript

- HTML 4.01 (1999) 스펙

- http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html#h-18.2.2.2

- HTML4, HTML5 지원

- Obsolete.


2. application/javascript

- RFC 4329 (2006) 스펙

- HTML5 지원

- Now Recommended.


이렇게 보면 application/javascript가 최신 스펙이니 최신걸로 사용해야겠라 생각할 수 있다.

문제는 서비스에서 지원하는 브라우저의 범위이다.

application/javascript를 사용할 경우에는 IE8 이하는 지원이 되지 않는다.


따라서, 

서비스를 개발할 때 IE 하위호환까지 고려를 해야되는 웹사이트라면 application/javascript는 문제가 되며,

(const 키워드가 먹히지 않았으며, 변수 등을 찾지 못하는 등 정상적인 스크립트 기능이 되지 않았다.)

이 경우는 text/javascript를 추천한다.


참고문헌

http://stackoverflow.com/questions/21098865/text-javascript-vs-application-javascript

http://stackoverflow.com/questions/6122905/whats-is-difference-between-text-javascript-and-application-javascript


Posted by SungHoon, Park
,

특정 IE11에서 window.popup()에 이름을 줘서 팝업을 띄워도 계속 새창으로 뜨게 되는 이슈가 있다. 

IE11 버그인 것 같음


https://connect.microsoft.com/IE/feedback/details/797964/ie11-win-8-1-window-open-with-the-same-name-is-opening-new-popup-window#details


정상적인 케이스는 팝업에 같은 이름을 줄 경우 계속 띄워진 팝업에서만 화면전환이 일어나야 한다.

하지만 윈도우OS 버전 or 윈도우 업데이트 버전에 따라 해당이슈가 발생하는 것 같으며 정확한 재현 케이스는 아직 잘 모르겠다.


이 문제를 해결하기 위해서는 다음과 같이 윈도우 객체를 변수로 관리하면 팝업을 유지할 수 있다.


<script type="text/javascript">
var myWindow = null;

function newPopup() {
	if (!myWindow || (myWindow && myWindow.closed)) {
		myWindow = window.open("http://localhost:8080", "_popup", "width=300px,height=300px,scrollbars=no");
	}
}
</script>


만약 같은 팝업을 각각 다른 페이지에서 띄울경우엔 myWindow 변수가 같이 유지되지 못하기 때문에 새창으로 뜨게 되는 단점은 존재하긴 한다.



Posted by SungHoon, Park
,