월별 글 목록: 2013년 8월월

[JS] IE8에서 substr( -1 ) 이 제대로 동작하지 않는 문제

이승엽군의 제보로 알게 된 내용입니다.

다음 코드는 IE8에서 정상적으로 동작하지 않습니다.

var id = "button0";
$( "#popup" + id.substr( -1 ) ).removeClass( "hidden" );

id.substr( -1 ) 부분이 “0”을 반환하지 않고 “button0″을 모두 반환하기 때문입니다.
id.substr( id.length – 1 ) 로 작성해주면 일단은 해결이 됩니다.

석연치 않은 마음이 들어 구글링을 하니 모질라 개발자 포럼에서 좋은 코드를 찾았습니다.
common.js 등에 넣어놓고 사용하면 되겠네요.

if ('ab'.substr(-1) != 'b')
{
	/**
	 *  Get the substring of a string
	 *  @param  {integer}  start   where to start the substring
	 *  @param  {integer}  length  how many characters to return
	 *  @return {string}
	 */
	String.prototype.substr = function(substr) {
		return function(start, length) {
			if (start < 0) start = this.length + start;
			return substr.call(this, start, length);
		}
	}(String.prototype.substr);
}