방식이다.
[Dev] FrontEnd
- 아이프레임 자동 리사이즈 (크로스 브라우징) 2010.08.30
- body onload 2010.08.16
- 자스 프린트 출력하기 2010.07.29
- 자바스크립트 오류를 Alert창으로 표시 2010.02.10
- Space없이 글자 입력시 개행이 되지 않는 문제(BreakWords) 해결 스크립트 2010.01.18
- [크로스 브라우저 문제] IE, FF에서의 display style 설정 문제 2010.01.13
- 공지 팝업창 띄우기 소스 2009.12.29
- 공개 웹 디자인 소스 링크 2009.12.11
아이프레임 자동 리사이즈 (크로스 브라우징)
방식이다.
body onload
페이지 로딩시 시작할 스크립트 선언에 대해 <body onload="">의 onload를 많이 사용해 보았을 것입니다.
그리고 모든 페이지에서 공통으로 들어갈 스크립트는 페이지 마다 작성을 하지 않고, js 파일을 만들어 연결을 하여 사용을 할 것입니다.
여기서 그럼 모든 페이지에서 load시 공통으로 실행될 스크립트는 어떻게 작업을 할까요??
window.onload를 사용 하면 됩니다.
window.onload = function(){ 시작시 실행될 내용 }
이런식으로 말이죠.
그런데 문제는 window.onload와 <body onload="">는 동시에 사용을 할 수 없습니다.
<body onload="">가 실행이 되면 window.onload는 실행이 되지 않는 문제가 있습니다.
그래서 이를 해결하고자 할때 사용하는 것이
window::onload()입니다.
function window::onload(){ 시작시 실행될 내용 }
이렇게 사용을 하면 됩니다.
실행 순서는 <body onload="">가 먼저 실행되고, 이어서 window::onload()가 실행됩니다.
자스 프린트 출력하기
브라우저에 보이는 내용중에서 특정부분만 인쇄하기 위해서
window.onbeforeprint 이벤트에서 출력 직전에 인쇄시 제외할 부분을 정의하고
window.onafterprint 이벤트에서 출력 직후에 제외한 부분을 다시 나타나게 한다.
function printReceipt() {
window.onbeforeprint = function() {
document.getElementById("btnPrint").style.display = "none";
}
window.onafterprint = function() {
document.getElementById("btnPrint").style.display = "inline";
}
window.print();
}
자바스크립트 오류를 Alert창으로 표시
//Error 잡아내기
var isDebugging = true;
function ErrorSetting(msg, file_loc, line_no) {
var e_msg=msg;
var e_file=file_loc;
var e_line=line_no;
var error_d = "Error in file: " + file_loc + "\nline number:" + line_no + "\nMessage:" + msg;
if(isDebugging)
alert("Error Found !!!\n--------------\n" + error_d);
return true;
}
window.onerror = ErrorSetting;
Space없이 글자 입력시 개행이 되지 않는 문제(BreakWords) 해결 스크립트
// Cross Browser Word Breaker with jQuery
// Usage : $('[search]').breakWords();
(function($) {
$.fn.breakWords = function() {
this.each(function() {
if (this.nodeType !== 1) { return; }
if (this.currentStyle && typeof this.currentStyle.wordBreak === 'string') {
this.runtimeStyle.wordBreak = 'break-all';
} else if (document.createTreeWalker) {
var trim = function(str) {
str = str.replace(/^\s\s*/, '');
var ws = /\s/, i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
}; //For Opera, Safari, and Firefox
var dWalker = document.createTreeWalker(this, NodeFilter.SHOW_TEXT, null, false);
var node, s, c = String.fromCharCode('8203');
while (dWalker.nextNode()) {
node = dWalker.currentNode;
s = trim(node.nodeValue).split('').join(c);
node.nodeValue = s;
}
}
});
return this;
};
})(jQuery);
오호..이런 좋은게 있었다니..
반나절의 삽질을
췌길... Literal 이것때문에 뭔 고생이람..ㅡㅡ;;
스타일이 먹히지 않는다걸 생각도 못하고. 다시는 이거 안써!!
Label이 짱이야.ㅋㅋ
## 참고 : jQuery.js (1.3.2) 버전 이상 가능
[크로스 브라우저 문제] IE, FF에서의 display style 설정 문제
if($.browser.msie)
{
document.getElementById("tr").style.display = "inline";
else
{
document.getElementById("tr").style.display = "table-row";
}
익스플로러 7이하에서는 "table-row"의 속성값을 인식하지 못하는 문제가 발생하였다..ㅡㅡ;;
이것은 "inline"으로 설정하면 간단하게 해결이 된다.
하지만 또 다른 문제 발생!!!!
바로 Firefox에서 또 다른 문제가 생긴다. "inline"을 사용하게 되면 첫번째 column에 Table Row가
그냥 생겨버린다.
colspan은 전혀 먹히지 않은채~~
그래서 IE이외의 브라우저는 "table-row" 속성을 먹이면 된다.
아따 스크립트 좀 통일 하면 안되냐 이것들아.!!!
공지 팝업창 띄우기 소스
// 해당이름의 쿠키를 가져온다.
function getCookie(cookie_name) {
var isCookie = false;
var start, end;
var i = 0;
// cookie 문자열 전체를 검색
while(i <= document.cookie.length) {
start = i;
end = start + cookie_name.length;
// cookie_name과 동일한 문자가 있다면
if(document.cookie.substring(start, end) == cookie_name) {
isCookie = true;
break;
}
i++;
}
// cookie_name 문자열을 cookie에서 찾았다면
if(isCookie) {
start = end + 1;
end = document.cookie.indexOf(";", start);
// 마지막 부분이라는 것을 의미(마지막에는 ";"가 없다)
if(end < start)
end = document.cookie.length;
// cookie_name에 해당하는 value값을 추출하여 리턴한다.
return document.cookie.substring(start, end);
}
// 찾지 못했다면
return "";
}
function openMsgBox()
{
var eventCookie=getCookie("event_condo");
// 쿠키가 없을 경우에만 (다시 보지 않기를 선택하지 않았을 경우.)
if (eventCookie != "no")
window.open('event_popup.html','_blank','width=350,height=300,top=50,left=150');
}
openMsgBox(); // 팝업창을 띄운다.
</SCRIPT>
[ event_pop.html ]
팝업창에 추가한다.
function setCookie( name, value, expiredays ){
var todayDate = new Date();
todayDate.setDate( todayDate.getDate() + expiredays );
document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";";
}
function closeWin(){
if ( document.event_Fcondo.event.checked )
setCookie("event_condo", "no" , 1); // 하루 쿠키 적용 ( 마지막 인자값이 날자임 )
}
</script>
</HEAD>
<BODY BGCOLOR="#FFFFFF" onunload="closeWin()">
아래의 체크박스에 체크한 후 창을 닫으면 하루동안 창이 열리지 않습니다.
<form name="event_Fcondo">
<input type="checkbox" name="event"><font size=2>오늘하루 이 창을 열지않음</font>
<input type=button value="닫기" onclick="self.close()">
</form>