'Javascript'에 해당되는 글 14건

  1. 2011.09.28 Javascript Timer setTimeout(), setInterval() 함수 나름 새로운 사용법 -_-
  2. 2011.09.27 jQuery ajax 로 로딩되는 페이지에 있는 자바스크립트가 실행이 안될때(모바일웹) 2
  3. 2011.09.09 Javascript Date format 함수 11
  4. 2011.09.09 Javascript escapeHtml, unescapeHtml 함수

Javascript Timer setTimeout(), setInterval() 함수 나름 새로운 사용법 -_-

setTimeout(fn, interval); 요함수는 interval 시간이 지난후에 fn 함수를 한번 실행시켜 주는 함수이다.

setInterval(fn, interval); 요함수는 interval 시간마다 fn 함수를 한번씩 실행시켜 주는 함수이다.



뭘 몰랐을때는 대부분 요렇게 호출될 함수를 따로 맹글어서 사용했다.
// 1초 뒤 timerTest() 함수 실행
setTimeout("timerTest()", 1000);

function timerTest(){
	alert("-_-凸");
}




하지만 요래도 사용이 가능한걸 오늘에서야 알게 되었다 -_-;;
// 위 예제와 동일한 작동을 함
setTimeout(function(){
	alert("-_-凸1");
}, 1000);


요렇게 사용할 수 있게 됨으로서 그동안 쫌 이상하게 코딩해야 했던 부분들을 쪼매 더 간결스럽게 코딩할수 있게 된것 같기도 하다.

역시 아는것이 힘인것 같다. 별건 아니지만..

jQuery ajax 로 로딩되는 페이지에 있는 자바스크립트가 실행이 안될때(모바일웹)

뭐 대부분의 브라우져에서는 앵간해서는 ajax 로 로딩될 페이지에 있는 자바스크립트가 무난하게 실행된다.

그런데 오늘 문득 이때까지 맹근게 모바일에서도 잘 될까하는 궁금함에 아이패드로 접속을 해 보았다.

그런데 이건뭐 지대로 되는게 하나도 없었다.


※ ajax 로 div 안에 다른 페이지 로딩하기
// 요래 하면 여러가지 다양한 ajax 옵션을 줄수 있어서 개인적으로 더 선호한다.
$.ajax({
    url : "로딩할 페이지 URL, ex)/common/list.jsp",
    dataType : "html",
    type : "post",  // post 또는 get
    data : { a:"값1", b:"값2"},   // 호출할 url 에 있는 페이지로 넘길 파라메터
    success : function(result){
        $("#div 아이디").html(result);
    }
});

// 간단하게 요렇게 써도 됨
$("#div 아이디").load("로딩할 페이지 URL", {넘길 파라메터});



왜 그런가 하고 계속 문제를 따라가보니

ajax 로 로딩되는 페이지에 있는 자바스크립트가 전~~~혀 실행이 안됬기 때문에 이벤트 걸어놨던거 등등이 하나도 적용이 안됬기 때문이었다.

구글링과 오만 이상한 짓을 다 해봤는데 아무리 해도 안되서 요만 포기할까 했는데

문득 마지막 순간에 촉이 와서 고걸 해보니까 정상적으로 실행되었다. -_-;;



문제는 바로...........

ajax 로 로딩될 페이지에 <html><head>...</head><body>...</body></html>  요 시리즈 태그가 있었기 때문이었다.

<html><head>...</head><body>...</body></html> 요것들을 다 제거하고



<script>......</script> 

<body></body> 태그를뺀 나머지 원래 소스...


요렇게 바꿔주면 아마 정상적으로 <script></script> 에 있는 스크립트들이 실행될것이다. 

음 그리고 <DOCTYPE> 어쩌고 하는것도 ajax 로 로딩될 페이지에 있으면 빼야 될것이다.~



오만 삽질을 다 한거에 비하면 허무한 결말이다. 

이빠이 사소하지만 그렇다고 해서 해결할 방법을 찾아내기가 쉽지는 않은 그런 꾸리한 문제들 중의 하나로 기억할것 같다. -_-;

앞으로 모바일웹용이던 아니던 프로젝트를 시작할때부터 공지를 잘해서

ajax 로 로딩될 페이지에는 <html><head>...</head><body>...</body></html> 요것을 빼고 코딩을 해야겠다.

Javascript Date format 함수

Date.prototype.format = function(f) {
	if (!this.valueOf()) return " ";

	var weekName = ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"];
	var d = this;
	
	return f.replace(/(yyyy|yy|MM|dd|E|hh|mm|ss|a\/p)/gi, function($1) {
		switch ($1) {
			case "yyyy": return d.getFullYear();
			case "yy": return (d.getFullYear() % 1000).zf(2);
			case "MM": return (d.getMonth() + 1).zf(2);
			case "dd": return d.getDate().zf(2);
			case "E": return weekName[d.getDay()];
			case "HH": return d.getHours().zf(2);
			case "hh": return ((h = d.getHours() % 12) ? h : 12).zf(2);
			case "mm": return d.getMinutes().zf(2);
			case "ss": return d.getSeconds().zf(2);
			case "a/p": return d.getHours() < 12 ? "오전" : "오후";
			default: return $1;
		}
	});
};

String.prototype.string = function(len){var s = '', i = 0; while (i++ < len) { s += this; } return s;};
String.prototype.zf = function(len){return "0".string(len - this.length) + this;};
Number.prototype.zf = function(len){return this.toString().zf(len);};


Example!
//2011년 09월 11일 오후 03시 45분 42초
console.log(new Date().format("yyyy년 MM월 dd일 a/p hh시 mm분 ss초"));

//2011-09-11
console.log(new Date().format("yyyy-MM-dd"));

//'11 09.11
console.log(new Date().format("'yy MM.dd"));

//2011-09-11 일요일
console.log(new Date().format("yyyy-MM-dd E"));

//현재년도 : 2011
console.log("현재년도 : " + new Date().format("yyyy"));

Javascript escapeHtml, unescapeHtml 함수

String.prototype.escapeHtml = function(){
  return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/\"/g, "&quot;");
};

String.prototype.unescapeHtml = function(){
  return this.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"");
};


Example
"<div>하이~~</div>".escapeHtml();                  // &lt;div&gt;하이~~&lt;/div&gt;

"&lt;div&gt;하이~~&lt;/div&gt;".unescapeHtml();    // <div>하이~~</div>


prototype : 원형, 견본, 전형, 선조, 원조
prev 1 2 3 next