frameset 으로 된 페이지의 리로드는 location.reload()로는 가능하지 않다. 각각의 프레임당 location이 다르기 때문. 사실 이 명령도 DOM 구조를 파악하면 쉬운 문제인데, parent.frames.location.reload(); 명령이면 모든 프레임이 리로드 된다.
화면을 수정했는데, 클라이언트의 브라우져에 캐시가 남아서 이전 화면이 나오는 경우가 있다. 직접 브라우져 설정 들어가서 캐시를 지워달라고 요청 할 수도 있지만, 그게 한두번이 아니게 되니 코드에서 캐시를 지울수 없는지 찾아보았다. 이럴수가... 크게 어렵지도 않지만, html한정으로 이게 꼭 필요한 화면이 아니면 아래 설정은 가급적 안 하는게 좋을 것 같다.
HTML 메타태그 이용하기
<!-- 1990년 이후 이 페이지의 캐시를 만료시킴. -->
<meta http-equiv="Expires" content="Mon, 06 Jan 1990 00:00:01 GMT" />
<!-- 캐시를 바로 만료시킴. -->
<meta http-equiv="Expires" content="-1" />
<!-- 페이지 로드시마다 페이지를 캐싱하지 않음. (HTTP 1.0) -->
<meta http-equiv="Pragma" content="no-cache" />
<!-- 페이지 로드시마다 페이지를 캐싱하지 않음. (HTTP 1.1) -->
<meta http-equiv="Cache-Control" content="no-cache" />
화살표 함수는 function 키워드 대신 => 를 사용하여 보다 간락한 방법으로 함수를 선언할 수 있다.
Arrow Function의 선언
// 매개변수 지정 방법
// 매개변수가 없을 경우
() => { ... }
// 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다.
x => { ... }
// 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다.
(x, y) => { ... }
// 함수 몸체 지정 방법
// single line block
// 함수 몸체가 한줄의 구문이라면 중괄호를 생략할 수 있으며 암묵적으로 return된다.
x => { return x * x }
x => x * x
// 객체를 반환하는 경우. 소괄호를 사용한다.
() => { return { a: 1 }; }
() => ({ a: 1 })
// multi line block.
() => {
const x = 10;
return x * x;
};
Arrow Function과 callback
화살표 함수가 기존의 function키워드를 완전히 대신할 수는 없지만, callback 함수에서 사용하면 간결하게 사용 가능하다.
선택 사항으로, 만약 지도가 IE나 안드로이드 v4 환경에서 보여지길 원한다면, OpenLayers script를 Include 하기전에 다음 파일을 Include해 준다.
<!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>