★ 2.1.2에서 해결된듯 합니다. 현재(2015년 10월 1일) 버전은 2.1.3입니다.

https://github.com/mathiasbynens/jquery-placeholder



jquery.placeholder.ls.js


ie9 이하의 브라우저에서 html5의 placeholder를 지원하는 방법으로 placeplder.js가 있고 jquery.placeholder.js가 있다.

그런데 placeplder.js는 뭔가 제대로 동작하는거 같지가 않아 jquery.placeholder.js을 선택했으나..

input type이 password인 경우 ie9는 정상작동 하지만 9미만에서는 type이 text로 바뀌지 않고 그대로 password로 유지되서

placeholder 값이 * 내지는 ●로 보여진다.

http://api.jquery.com/attr/ 여기를 읽어보니 이런 내용이 있네?

Note: Attempting to change the type attribute (or property) of an input element created via HTML or already in an HTML document will result in an error being thrown by Internet Explorer 6, 7, or 8.

처리되는 부분은 2.1.0버전 기준 162라인

$replacement = $input.clone().attr({ 'type': 'text' });

이것인데 원래의 input을 복사해다가 type만 text로 바꾼다는 내용이지만 ie6,7,8에서는 type이 이미 명시된 경우에는 바뀌지가 않는다는..걸로 해석하면 맞으려나?

그래서

	if($.browser.msie && $.browser.version<=9) {
		$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
	}

이걸 추가해보니 동작은 정상적으로 되지만 속성을 보니 class가 두개가 잡힌다.

뭐 문제는 없겠으나 행여나 오작동 할 여지가 있어보여 다시 수정했다.

	if($.browser.msie && $.browser.version<=9) { // less then ie9. 2015.02.17.dusthand.
		$replacement = $('<input>').attr({ 'type': 'text' });
		$.each(args(this), function(a_name,a_value){
			if(a_name=='type' || a_name=='') return true;
			if(a_name=='class')
				$replacement.addClass(a_value);
			else
				$replacement.removeAttr(a_name).attr(a_name,a_value);
		});
	}

이렇게 추가해서 해결.

참고로 jquery버전은 1.11.1 이고 migrate-1.2.1도 로딩했다.

<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>


'jQuery' 카테고리의 다른 글

lazyload 플러그인. 일부만 안보여?  (0) 2014.11.14
블로그 이미지

먼지손

,

사실 이미 오래전에 꽂아놓은 플러그인이지만 뭔가 제대로 안돌길래 페이지를 캐싱했다가 출력하는(그누보드) 방식이라 그런가 하고 신경끄고 있었는데 얼마전 우연찮게 다른 자료 찾다가 해당 이미지는 src가 아니라 data-original 로 지정해줘야 한다는걸 뒤늦게 발견하고 적용시켰더니 잘 된다.

그런데..! 대부분은 잘 나오는데 게시판 본문에 추가이미지에 적용해놓은 놈등 몇개만 안나온다; 그냥 또 신경끄고 있다가 오늘 눈에 걸려서 다시 소스를 뒤적거리다가 발견한건.. alt=""

왜인걸까? alt속성이 없거나 비어있으면 이미지출력이 안된다. data-original의 값을 스크립트에서 src로 넣어줘서 처리하는건데 묘하게 alt가 없으면 src값이 안들어간다. 처리대상에 안들어간건지 대상에는 들어갔지만 처리과정에서 누락 또는 오작동 하는건지는 실력이 미천하여 소스를 봐도 원인을 못찾았다.

결국 lazyload의 대상이 되는 img 태그에 alt값이 없거나 alt=""가 들어가있으면 alt=" " 이런식으로 뭔가 값을 넣어주는걸로 해결.
이것도 왠지 내가 뚝딱거린 그누보드에서만 그럴거 같다는 생각이 들기는 하지만 행여나 비슷한 현상을 겪는분이 있을수도 있겠다싶어 포스팅해본다.

'jQuery' 카테고리의 다른 글

ie7,ie8에서 jquery.placeholder.js password필드버그  (5) 2015.02.17
블로그 이미지

먼지손

,