Search Results for '전체 분류'
2064 posts related to '전체 분류'
- 2007/11/22 [소스] 마우스 커스 이동만으로 배경색상을 바꾸어보자
- 2007/11/22 [소스] 자바스크립트 버튼에 링크 걸기
- 2007/11/22 [소스] 다양한 자바스크립트 버튼 들
- 2007/11/22 [팁] 자신 사이트 메일 주소 사용하기 체크박스 | +JavaScript
- 2007/11/22 [팁] 웹문서에 페이지 로딩중 효과 | SCRIPT
- 2007/11/22 [소스] [소개]윈도우 미디어 플레이어 - 컨트롤 버튼
- 2007/11/22 [소스] 속도를 위해 데이터를 접속자 메모리에
- 2007/11/22 [소스] 아이프레임하나만 새로고침하기
- 2007/11/22 [소스] 이미지 미리 로딩시켜놓기
- 2007/11/22 [소스] 자막파일(.smi) 싱크밀고 당기기
- 2007/11/22 [소스] 쿠키1년간체크
- 2007/11/22 [소스] 체크한 것만 합계를 표시하는 스크립트
- 2007/11/22 [소스] 클릭시 화면이 위로 올라가는 현상 막아주기
- 2007/11/22 [소스] 클릭한 메뉴 고정하기
- 2007/11/22 [소스] 항상중심에레이어띄우기
- 2007/11/22 [소스] present[다음에서 발췌]
- 2007/11/22 [소스] SHIFT, CTRL, ALT 키를 막는 방법
- 2007/11/22 [소스] 간단한 퀵메뉴
- 2007/11/22 [소스] 링크클릭시 나타나는 점선 없애주기 1
- 2007/11/22 [팁] 타겟(target) 쓰는 법
- 2007/11/22 [소스] 실제 이미지 크기 알아내기
- 2007/11/22 [팁] iframe-사이즈 자동 조절
- 2007/11/22 익스플로러7 팝업창의 주소창 없애기
- 2007/11/22 asp에서 XML파서를 이용한 ajax 한글 처리 방법[펌]
- 2007/11/22 다음주 수요일 구하는 프로그램
- 2007/11/22 windows2003에서 ASP자료실 사용시 200k이상 업로드가
- 2007/11/22 WebEditor 1.53 Build 43
- 2007/11/22 위지윅 툴 추천 ^^
- 2007/11/22 ASP에서 간단히 엑셀/워드 파일 만드는 방법
- 2007/11/22 ASP 트랜잭션 처리
<HEAD>
<TITLE> Sample Script </TITLE>
</HEAD>
<BODY>
<TABLE border="0" cellspacing=0 cellpadding="3" bgcolor="teal" align=center width=70%>
<TR>
<TD bgcolor="white" align=center>
<!-- 메모장 등으로 아래의 방법으로 HTML 문서의 BODY 부분에 붙여 넣으세요 -->
<!--- 아래의 방법으로 하이퍼링크를 만듭니다.
중요한 내용은
onmouseover="document.bgColor='green'" 에서
green 부분을 원하는 색상으로 넣어 주면 됩니다
----->
[<A href="#" onmouseover="document.bgColor='green'">Green</A>]
[<A href="#" onmouseover="document.bgColor='green'">Bright Green</A>]
[<A href="#" onmouseover="document.bgColor='seagreen'">Sea Green</A>]
[<A href="#" onmouseover="document.bgColor='red'">빨강색</A>]
[<A href="#" onmouseover="document.bgColor='magenta'">Magenta</A>]
[<A href="#" onmouseover="document.bgColor='fusia'">Fusia</A>]
[<A href="#" onmouseover="document.bgColor='pink'">Pink</A>]
[<A href="#" onmouseover="document.bgColor='purple'">Purple</A>]
[<A href="#" onmouseover="document.bgColor='navy'">Navy</A>]
[<A href="#" onmouseover="document.bgColor='blue'">파랑색</A>]
[<A href="#" onmouseover="document.bgColor='royalblue'">Royal Blue</A>]
[<A href="#" onmouseover="document.bgColor='Skyblue'">Sky Blue</A>]
[<A href="#" onmouseover="document.bgColor='yellow'">Yellow</A>]
[<A href="#" onmouseover="document.bgColor='brown'">Brown</A>]
[<A href="#" onmouseover="document.bgColor='almond'">Almond</A>]
[<A href="#" onmouseover="document.bgColor='white'">White</A>]
[<A href="#" onmouseover="document.bgColor='black'">Black</A>]
[<A href="#" onmouseover="document.bgColor='coral'">Coral</A>]
[<A href="#" onmouseover="document.bgColor='olivedrab'">Olive Drab</A>]
[<A href="#" onmouseover="document.bgColor='orange'">Orange</A>]
<!------------------------- 여기까지 ---------------------------------->
</TD>
</TR>
</TABLE></DIV>
</body>
</HTML>
<HEAD>
<TITLE> Sample Script </TITLE>
</HEAD>
<BODY>
<CENTER>
<!------ 최근의 브라우저에서는 아래의 다양한 링크버튼형태를 사용할 수 있습니다 -------->
<FORM>
<INPUT TYPE="button" VALUE="자바스크립트 버튼 (1)" onClick="location.href='http://www.yahoo.co.kr'">
</FORM>
<FORM action='http://www.yahoo.co.kr'>
<INPUT TYPE="submit" VALUE="자바스크립트 버튼 (2)">
</FORM>
<!-- 위의 코드는 폼의 내용을 전송할때 사용합니다 -->
<INPUT TYPE="button" VALUE="자바스크립트 버튼 (3)" onClick="location.href='http://www.yahoo.co.kr'">
<button onClick="location.href='http://www.yahoo.co.kr'">자바스크립트 버튼 (4)</button>
<!------------------------- 여기까지 ---------------------------------->
</CENTER>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE> JASKO 샘플 페이지 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Elbis">
<META NAME="Keywords" CONTENT="JavaScript, 자바스크립트">
</HEAD>
<BODY>
<!------------------------- 팝업 윈도우 열기 ----------------------->
<center>
<H3>새 창 열기</H3>
<FORM>
<input type="button" Value=" 야후! 코리아 " ONCLICK="window.open('http://www.yahoo.co.kr/', 'Sample', 'toolbar=no,location=yes,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=400,height=300')">
</FORM>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<input type="button" Value=" 야후! 코리아 " ONCLICK="window.open('http://www.yahoo.co.kr/', 'Sample', 'toolbar=no,location=yes,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=400,height=300')">
<!-- 옵션중에서 어느 한가지만 지정하면 나머지 옵션들은 전부 no 로 지정됩니다-->
<!-- 예 -->
<input type="button" Value=" 야후! 코리아 " ONCLICK="window.open('http://www.yahoo.co.kr/', 'Sample', 'width=400,height=300')">
</textarea>
<hr>
<!------------------------- 폼 메일 보내기 ----------------------->
<H3>폼을 이용한 메일 보내기</H3>
<script language="JavaScript">
function mailMe( form ) {
// 여기에 체크 코드를 입력합니다
return true;
}
</script>
<form name="testform" method="POST" action="mailto:babo@babo.com?subject='메일제목'" onSubmit="return mailMe( this.form )" enctype="text/plain">
홈페이지 주소:<br>
<input type="text" name="URLbox" value="http://" size=50><br>
내용을 입력 하세요:<br></font>
<input type="text" name="titlebox" value="" size=50>
</form>
<form name="testform" method="POST" action="mailto:babo@babo.com?subject='메일제목'" onSubmit="return mailMe( this.form )" enctype="text/plain">
<input type="submit" value=" 확인 ">
</form>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<script language="JavaScript">
function mailMe( form ) {
// 여기에 체크 코드를 입력합니다
return true;
}
</script>
<form name="testform" method="POST" action="mailto:babo@babo.com?subject='메일제목'" onSubmit="return mailMe( this.form )" enctype="text/plain">
홈페이지 주소:<br>
<input type="text" name="URLbox" value="http://" size=50><br>
내용을 입력 하세요:<br></font>
<input type="text" name="titlebox" value="" size=50>
</form>
<form name="testform" method="POST" action="mailto:babo@babo.com?subject='메일제목'" onSubmit="return mailMe( this.form )" enctype="text/plain">
<input type="submit" value=" 확인 ">
</form>
</textarea>
<!------------------------- 링크 버튼 만들기 ----------------------->
<hr>
<H3>링크버튼 만들기</H3>
<form>
<INPUT TYPE="button" VALUE="야후! 코리아" onClick="parent.location='http://www.yahoo.co.kr'"></form>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="button" VALUE="야후! 코리아" onClick="parent.location='http://www.yahoo.co.kr'">
</textarea>
<hr>
<!------------------------- 프레임간 링크 버튼 ----------------------->
<H3>프레임간 링크버튼 만들기</H3>
<form>
<INPUT TYPE="button" VALUE="야후! 코리아" onClick="parent.main.location='http://www.yajoo.co.kr'"></form>
<FONT SIZE="2" COLOR="blue">이 스크립트는 프레임이 없는 현재 상태에서는 에러가 납니다</FONT>
<br>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="button" VALUE="야후! 코리아" onClick="parent.main.location='http://www.yajoo.co.kr'">
<!-- 여기서 main 은 보여주고자 하는 프레임명 입니다 -->
</textarea>
<hr>
<!------------------------- 뒤로가기/앞으로가기 ----------------------->
<H3>뒤로가기 / 앞으로 가기</H3>
<SCRIPT LANGUAGE="JavaScript">
<!--
function goHist(a)
{
history.go(a);
}
//-->
</script>
<FORM METHOD="post">
<INPUT TYPE="button" VALUE=" 뒤로가기 " onClick="goHist(-1)">
<INPUT TYPE="button" VALUE="앞으로 가기" onClick="goHist(1)">
</form>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<SCRIPT LANGUAGE="JavaScript">
<!--
function goHist(a)
{
history.go(a);
}
//-->
</script>
<FORM METHOD="post">
<INPUT TYPE="button" VALUE=" 뒤로가기 " onClick="goHist(-1)">
<INPUT TYPE="button" VALUE="앞으로 가기" onClick="goHist(1)">
</form>
<!--
2 페이지 앞으로 가려면 goHist(2)
2 페이지 뒤로 가려면 goHist(-2)
-->
</textarea>
<hr>
<!------------------------- 프레임에서 뒤로/앞으로 가기 ----------------------->
<H3>프레임에서 뒤로/앞으로 가기</H3>
<form>
<INPUT TYPE="button" VALUE=" 뒤로가기 " onClick="parent.main.history.back()">
<INPUT TYPE="button" VALUE=" 앞으로 가기 " onClick="parent.main.history.forward()"><BR><BR>
<FONT SIZE="2" COLOR="blue">이 스크립트는 프레임이 없는 현재 상태에서는 에러가 납니다</FONT>
<br>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="button" VALUE=" 뒤로가기 " onClick="parent.main.history.back()">
<INPUT TYPE="button" VALUE=" 앞으로 가기 " onClick="parent.main.history.forward()">
<!--
여기에서 main 은 프레임 이름 입니다
-->
</textarea>
<HR>
<!------------------------- 소스 보기 ----------------------->
<H3>소스 보기</H3>
<FORM>
<INPUT TYPE="BUTTON" VALUE=" 소스 보기 " onClick= 'window.location = "view-source:" + window.location.href'>
</form>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="BUTTON" VALUE=" 소스 보기 " onClick= 'window.location = "view-source:" + window.location.href'>
</textarea>
<HR>
<!------------------------- 프레임 소스 보기 ----------------------->
<H3>프레임 소스 보기</H3>
<FORM>
<INPUT TYPE="BUTTON" VALUE=" 소스보기 " onClick= 'parent.menu.location = "view-source:" + parent.menu.location'>
</form>
<FONT SIZE="2" COLOR="blue">이 스크립트는 프레임이 없는 현재 상태에서는 에러가 납니다</FONT>
<br>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="BUTTON" VALUE=" 소스보기 " onClick= 'parent.menu.location = "view-source:" + parent.menu.location'>
<!--
여기에서 menu 는 프레임 이름 입니다
-->
</textarea>
<hr>
<!------------------------- 새로고침 --------------------------------->
<H3>페이지 새로고침</H3>
<form>
<INPUT TYPE="button" VALUE=" 새로고침 " onClick='parent.location="javascript:location.reload()"'>
</form>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="button" VALUE=" 새로고침 " onClick='parent.location="javascript:location.reload()"'>
</textarea>
<HR>
<!------------------------- 프레임 새로 고침 ----------------------->
<H3>프레임 새로고침</H3>
<form>
<INPUT TYPE="button" VALUE=" 프레임 새로고침 " onClick='parent.main.location="javascript:location.reload()"'>
</form>
<FONT SIZE="2" COLOR="blue">이 스크립트는 프레임이 없는 현재 상태에서는 에러가 납니다</FONT>
<br>
<font size=2 color=teal><b>소스코드</b></font><br>
<textarea rows=5 cols=50 style="background-color:#EEEEEE">
<!-- 아래의 방법으로 원하는 위치에 코드를 붙여 넣습니다 -->
<INPUT TYPE="button" VALUE=" 프레임 새로고침 " onClick='parent.main.location="javascript:location.reload()"'>
<!--
여기에서 main 은 프레임 이름 입니다
-->
</textarea>
</center>
</BODY>
</HTML>
// Email Check Function
//===================================
function Chk_Email(type) {
var obj_email = document.form.email;
var struserid = document.form.userid;
var mailcheck = document.form.mailcheck;
var tail
if(mailcheck.checked){
tail = "@kma.or.kr";
if(struserid.value != ""){
obj_email.value = struserid.value + tail;
}else{
alert('아이디를 입력해주세요');
struserid.focus();
mailcheck.checked = false;
return false;
}
}
else{
obj_email.value = "";
}
return true;
}
페이지가 다 뜨기전에 '로딩중' 이라는 글씨를 나오게 합니다.
헤드부분에
<script language=javascript>
n = document.layers
ie = document.all
function hide() {
if (ie || n) {
if (n) document.Load.visibility = "hidden"
else Load.style.visibility = "hidden"
}
}
</script>
<body>에
<body text=black bgcolor=white onload="hide()">
<script language=javascript>
if(ie || n) document.write('<div id="Load" style="position:absolute;width:100%;height:100%;top:0;left:0;background-color:#ffffff;z-index:5">페이지 로딩중 보여줄 내용 (플래시도 됩니다.)</div>')
</script>
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/imedia/netshow/advancedbuttons/default.asp 재생, 중지, 소리 끄기 등 버튼에 쓰는 javascript 함수가 있습니다. Windows Media Advanced Buttons | |||
Description
Goal: Incorporate buttons in a Web page that control a variety of features of the Windows® Media Player in both Microsoft® Internet Explorer and Netscape Navigator® .This sample describes how to incorporate advanced buttons for the Windows Media Player into a Web page. These buttons will work in any browser that supports the Windows Media Player Plug-in and JavaScript.
Since Internet Explorer utilizes the ActiveX model for incorporating components into HTML pages and Navigator uses its own plug-in architecture, we must write our code in a way that will work in both environments. The ActiveX model allows properties, methods, and events to be accessed directly through the Document Object Model (DOM -- a fancy term used to describe how elements on a Web page are addressed). The plug-in model only allows for methods to be passed directly to the browser. As such, to write code for both browsers, the code needs to perform a browser check (sometimes called a browser sniff) and run browser-specific code.
More Details
The Windows Media Player has about one hundred properties and over 20 methods. The Media Player methods (Play, Pause, Stop, etc) will work with both the ActiveX control and the plug-in as they stand. Accessing and modifying the properties of the Media Player, however, requires somewhat different scripting syntax between the ActiveX control and the plug-in. For a given property, such as the read-write "FileName" property, plug-in code must access the property using the SetpropertyName and GetpropertyName methods.The statement
for ActiveX browsers is analogous to the following statement for the plug-in:
. This code would set the FileName property of the Media Player to "demo.asf".
To get information about a plug-in property, the property must be retrieved by invoking a GetpropertyName Method. For example, the statement
for ActiveX browsers is analogous to the following statement for the plug-in:
.
More examples follow.
Code to Include
We'll start with our generic cross-browser code embedding code. This code will instantiate the Media Player ActiveX control for browsers which support ActiveX, and the Media Player plug-in for browsers that don't:
<OBJECT ID="MediaPlayer1" width=160 height=112 classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase= "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" standby="Loading Microsoft® Windows® Media Player components..." type="application/x-oleobject"> <PARAM NAME="FileName" VALUE="mms://windowsmediaserver/path/your-file.asf"> <PARAM NAME="ShowControls" VALUE="0"> <EMBED type="application/x-mplayer2" pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/" SRC="mms://windowsmediaserver/path/your-file.asf" name="MediaPlayer1" width=160 height=112 ShowControls=0> </EMBED> </OBJECT>
Next, we'll define a form and some buttons:
<FORM NAME="myButtons"> <INPUT NAME="btnPlay" TYPE="Button" VALUE="Play" onclick="document.MediaPlayer1.Play();"> <INPUT NAME="btnPause" TYPE="Button" VALUE="Pause" onclick="document.MediaPlayer1.Pause();"> <INPUT NAME="btnStop" TYPE="Button" VALUE="Stop" onclick="document.MediaPlayer1.Stop();">
<INPUT NAME="btnShowControls" TYPE="Button" VALUE="Show Controls" onclick="showClick()"> <INPUT NAME="btnHideControls" TYPE="Button" VALUE="Hide Controls" onclick="hideClick()">
<INPUT NAME="btnMute" TYPE="Button" VALUE=" Mute " onclick="muteClick()"> </FORM>
In the code above, all of the buttons make calls through JavaScript. The first three buttons use JavaScript to make calls directly through the Document Object Model (DOM), calling methods of the Media Player.
The rest of the buttons call JavaScript functions, allowing for more advanced scripting, such as accessing Media Player properties for both the ActiveX control and the plug-in.
Now we'll add the JavaScript functions:
<SCRIPT LANGUAGE="JavaScript"> // Browser sniff -- the following code does a very simple browser check and rates the // browser as either Internet Explorer on a Win32 platform or not, so that we // know to use the ActiveX model, or the plug-in Model. var sBrowser = navigator.userAgent; if ((sBrowser.indexOf("IE") > -1) && (navigator.platform == "Win32")) { sBrowser = "IE"; } else { sBrowser = "nonIE"; } // end browser sniff function showClick() // This function is called by the btnShowControls button. // It sets the ShowControls property of Media Player to true. { if (sBrowser == "IE") { document.MediaPlayer1.ShowControls = true; } else { document.MediaPlayer1.SetShowControls(true); } } function hideClick() // This function is called by the btnHideControls button. // It sets the ShowControls property of Media Player to false. { if (sBrowser == "IE") { document.MediaPlayer1.ShowControls = false; } else { document.MediaPlayer1.SetShowControls(false); } } function muteClick() // This function is called by the "Mute" button. // It toggles the state of the Mute property of the Media Player. { var bMuteState; if (sBrowser == "IE") { bMuteState = document.MediaPlayer1.Mute; } else { bMuteState = document.MediaPlayer1.GetMute(); } if (bMuteState == true) { document.myButtons.btnMute.value="Mute"; if (sBrowser == "IE") { document.MediaPlayer1.Mute = false; } else { document.MediaPlayer1.SetMute(false); } } else { document.myButtons.btnMute.value="Un-Mute"; if (sBrowser == "IE") { document.MediaPlayer1.Mute = true; } else { document.MediaPlayer1.SetMute(true); } } } </SCRIPT>
There are three main parts to this script: The browser sniff, the showClick() and hideClick() functions, and the muteClick() function.
The browser sniff is called immediately, before the page is finished loading. It simply grabs the userAgent property of the navigator object. Each browser has its own userAgent string, which can be used to tell the name and version of the browser. Using the intrinsic indexOf() function, we're determining whether or not this is a Win32 Internet Explorer based browser (which then supports ActiveX controls) or not, and storing that information in a global string variable (sBrowser).
The showClick() and hideClick() functions are called by the btnShow and btnHide buttons. They use the browser sniff information (sBrowser) to set the ShowControls property of the browser for both the plug-in and the ActiveX control.
The muteClick() function is the handler for the btnMute button. This is a more advanced button that toggles the mute property of the Media Player between true and false. First, it retrieves the Mute property of the Media Player, and determines whether the property is set to true or false. Then, based on this information, it toggles the state of the Mute property, i.e. if the Mute property is set to true, the function sets it to false, and vice versa. Also, the function resets the value of the button so that the user can tell what the button actually does.
Browser/Platform Compatibility and other Requirements
This code will work with Internet Explorer 4+, and Netscape Navigator 4+ on platforms that support the Windows Media Player plug-in and ActiveX control.Related Links
주로 관리자만 게시물을 올리고 접속자는 열람만 하는 데이터 베이스의 경우,
그리고 대부분의 사용자가 요구하는 데이터가 1M 미만인 경우,
접속자가 접속하는순간 데이터 베이스의 내용을 그대로 접속자의 메모리에 올려 버려서 그다음은 접속자가 계속 검색을 하는 내용이 모두 서버와의 교신 없이 이루어 지게 하면 서버의 부하를 비약적으로 줄일 수 있습니다.
특히 연구 관련 사이트에서 한번 접속하면 한두시간씩 검색을 하는 경우 유용하지요.
그럴수 밖에 없는 것이 데이터 베이스 쿼리도 한번, 서버에서 자료를 주는 것도 접속한 순간 한번에 끝나는 것으로써 서버에서는 세션 등의 관리조차 필요없어 지니까요.
이것은 프레임을 사용해서 합니다.
*** index.html ***
<html>
<head>
<title>Welcome</title>
</head>
<frameset rows="100%,0%" frameborder="NO" border="0" framespacing="0">
<frame name="main" src="home.html">
<frame name="process" scrolling="NO" noresize src="initializer.html">
</frameset>
</html>
여기서 세개의 페이지가 로딩 되는데요.
top 프레임은 html자체로는 아무 내용도 없는 것 같지만 process프레임에서 돌아가는 javascript가 모든 데이터를 테이블 통째로 top프레임의 메모리에 올려놓습니다.
main프레임에서는 이 데이터를 이용해서 고객에게 검색 결과를 보여주게 되며 서버와는 고객이 refresh버튼을 누르지 않는 이상 교신하지 않습니다.
"검색" 버튼을 누른다고 해도 페이지를 새로 로드해서 보여주는 것이 아니라 javascript 함수로 페이지 자체를 새로 build해서 document.writeI()으로 써주기 때문에 고객의 입장에서는 페이지가 새로 로드된 것 같지만 실상은 서버와 아무런 통신이 없지요.
그러나 프로세스 프레임을 고객이 굳이 보게되면 (아무리 보이지 않는 프레임이라 해도 볼수 있으니까) 자료 테이블을 통째로 보고 황당해 할테니까 고객의 안심을 위해서 약간의 팁이 필요한데 아래 주석 달린 소스를 읽어보세요.
물론 이것은 얼마든지 브레이크 하고 열람할 수 있기 때문에 절대로 절대로 보안상의 이유로는 쓸수 없으며 단지 고객을 편안하게 해주기 위해서 하는 것 뿐입니다.
*** initializer.html ***
//데이터 구조에 대한 PHP클라스 정의가 여기 들어 있습니다. 디비를 직접 엑세스 하는 것은 이 페이지 뿐이니 다른 페이지에서는 사용하지 않습니다. (다른 페이지에서는 PHP자체를 사용하지 않습니다)
<?require "dbclass.inc";?>
<html>
<head>
<title>Data Loader</title>
//데이터 구조에 대한 Javascript class 정의가 이 파일에 들어 있습니다. 데이터를 사용하기 위해서는 메인 프레임의 페이지에서도 물론 이 스크립트 파일을 사용해야지요.
<script src='include/jslibrary.js'></script>
<script>
<?
$s = "
var w = window;
var t = window.top;
var d = window.document;
//모든 정보는 탑 프레임의 메모리에 상주하는 windows.top.db 에 저장됩니다.
t.db = new Object();
";
$preload = array();
$preload["mydata"] = "SELECT * FROM mydata ORDER BY reg_date;";
$preload["mydata2"] = "SELECT * FROM anotherdata ORDER BY subject;";
// 모든 데이터는 이 프레임이 아니라 Top 프레임의 메모리에 저장되기 때문에 이 프레임이 사라져도 상관 없다.
foreach($preload as $key=>$val) {
$q = sql_q($val);
$class_name = "C".$key;
$s .= 't.db.'.$key." = new Array();n";
while ($r = new $class_name(sql_r($q))) {
$s .= 't.db.'.$key.'[t.db.'.$key.'.length] = '.$r->clientize().";n";
}
// 탑 프레임의 Flag에 표시해서 데이터 업로드가 끝났다는 것을 표시. 메인 페이지에서 참조하고 데이터 엑세스를 시작할 수 있도록
$s .= "
t.loaded = true;
" ;
// 자바스크립트 텍스트를 뿌려주기 전에 약간 읽기 편하게(?) 만들어준다.
// 모든 코멘트 삭제, 줄바꿈, 탭, 필요없는 스페이스 삭제.
$search = array("'([rn])s+'i", "'(//.*n|/*/.**/|[trn])'si", "'s*=s*'i", "',s+'i", "';s+'i");
$replace = array("", "", "=", ",", ";");
// 거기다가 다시 보기좋게(?) encoding 해줌
$s = rawurlencode(preg_replace($search, $replace, $s));
// 자바스크립트에서 받은 다음에 decode해서 사용하도록 (자바스크립 1.1부터 지원)
echo "eval(unescape("$s"));";
?>
// 아무리 알아보기 힘들다고 해도 역시 않보여 주는 것이 최고!
// 페이지가 로딩되는 순간 다시 모든것을 지워버린다.
// 페이지를 다 만든다음 버퍼에서 뿌려주기 때문에 로딩이 시작된후 끝나고 지워지는데 까지 걸리는 시간은 0.01 초?
function done() {
document.write(" ");
document.close();
}
</script>
</head>
<body onload="done();">
</body>
</html>
<iframe src="http://naver.com" width=220 height=80 scrolling=no frameborder=0 name="aaa"></iframe>
<iframe src="http://empas.com" width=220 height=80 scrolling=no frameborder=0 name="bbb"></iframe>
<script language="javascript">
<!--
function doRefresh() {
parent.aaa.location.href='http://naver.com';
setTimeout("doRefresh()",5000); //5초
}
doRefresh();
//-->
</script>
</body>
드림위버에 PreLoadImage라는 Behavior가 있는데 잠깐 소개하죠..
출처는 Macromedia사의 드림위버에 삽입된 Behavior 모듈임을 밝힘니다.
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
var d=document;
if(d.images){
if(!d.MM_p)
d.MM_p=new Array();
var i, j=d.MM_p.length, a= MM_preloadImages.arguments;
for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){
d.MM_p[j]=new Image;
d.MM_p[j++].src=a[i];
}
}
}
//-->
</script>
그리고 <body omload="MM_preloadImages('이미지1','이미지2','이미지3','이미지4','이미지5')">
나참..뭐 대단한 기능이 있다고...(하지만, 전 못만든다죠...^^)
그래서, 간단하게 자막의 싱크를 밀고 당기는 스크립트를 만들었다는...^^
<html><head>
<meta http-equiv="content-script-type" content="text/javascript">
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-language" content="ko">
<title> new document </title>
<script>
conv=function(sign){
var time=parseInt(mytime.value);
var src = mysource.value;
var re = /<SYNC Start=(\-?\d+)>/;
var cut = null, t;
while( cut = re.exec( src ) ){
t = time;
if(sign=='+') t = parseInt( cut[1] ) +t;
else t = parseInt( cut[1] ) - t;
src=src.replace(re,"<SYNC Start=+"+t+">");
}
mysource.value=src.replace(/(<SYNC Start=)\+(\-?\d+>)/g,"$1$2");
};
</script></head><body>
<textarea id="mysource" cols="50" rows="20">
<SYNC Start=2262><P Class=KRCC>
<font color=yellow size=14>'프렌즈'</font>
<SYNC Start=6111><P Class=KRCC>
<SYNC Start=7825><P Class=KRCC>
자막제작: 이X호(XXX@lamp.kaist.ac.kr)
<SYNC Start=11038><P Class=KRCC>
<SYNC Start=14510><P Class=KRCC>
출연: 제니퍼 애니스톤 (레이첼)
<SYNC Start=16390><P Class=KRCC>
<SYNC Start=17637><P Class=KRCC>
코트니 콕스 (모니카)
<SYNC Start=19235><P Class=KRCC>
</textarea><BR>
<INPUT id="mytime" TYPE="text" value="1000">
<button onclick="conv('+')">밀기</button>
<button onclick="conv('-')">당기기</button>
</body></html>
function setCookie( name, value, expire ) {
var today = new Date();
today.setDate( today.getDate() + expire );
document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";"
}
function showOrgPage() {
if ( confirm( "Explorer 오류페이지로 전환 하시겠습니까?" ) ) {
setCookie( "isorgpage", "1", 31104000 ); // 1년간 체크
}
}
</script>
function sum(obj) {
var oColl = obj.form.elements;
var total = 0;
for (var i=0; i < oColl.length; i++) {
if (oColl[i].name.substr(0,4)=="item" && oColl[i].checked)
total += parseInt(oColl[i].price);
}
obj.form.total.value = total;
}
</script>
<form>
<input type=checkbox name=item1 price=100 onClick="sum(this)">100원짜리<br>
<input type=checkbox name=item2 price=120 onClick="sum(this)">120원짜리<br>
<input type=checkbox name=item3 price=150 onClick="sum(this)">150원짜리<br>
<input type=text name=total value=0 readonly>
</form>
이럴경우에 'href=#'으로 작업을 하게 되면 클릭시 화면이 상단으로 올라가는 현상이 일어납니다.
OnClick~ 끝 부분에 return false를 입력하여 주면 클릭시 그대로 화면이 멈추어진다.
<a href=# onclick="popup('링크','ntload',820,540); return false;" >
▶ 기능: 클릭한 메뉴 고정하기
---------------------------------------------------------------------------------------->
<html>
<head>
<title>http://www.01code.com[ 클릭한 메뉴 고정하기 ]</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<link rel=stylesheet href="http://www.01code.com/ydhtml/01code.css" type=text/css>
<script language=javascript>
<!--
var FixPoint = ""; //고정된 메뉴 초기화
var muNum = 3; //메인 메뉴 개수
var imgDir = "http://www.01code.com/webedition/images/"; //이미지 경로
if(document.images)
{
mu_1_0_on = new Image(); mu_1_0_on.src = imgDir + "mu_1_0_on.gif"; mu_1_0_off = new Image(); mu_1_0_off.src = imgDir + "mu_1_0_off.gif";
mu_2_0_on = new Image(); mu_2_0_on.src = imgDir + "mu_2_0_on.gif"; mu_2_0_off = new Image(); mu_2_0_off.src = imgDir + "mu_2_0_off.gif";
mu_3_0_on = new Image(); mu_3_0_on.src = imgDir + "mu_3_0_on.gif"; mu_3_0_off = new Image(); mu_3_0_off.src = imgDir + "mu_3_0_off.gif";
}
function ImgOn(imgName){
if(document.images) document[imgName].src = eval(imgName + "_on.src");
}
function ImgOff(imgName)
{
if(document.images) document[imgName].src = eval(imgName + "_off.src");
}
function SetInit()
{
SetFix('');
}
function SetFix(SetPoint)
{
if(SetPoint != ""){ FixPoint = SetPoint; }
for(i=1; i<=muNum; i++){
var imgName = "mu_" + i + "_0";
if(FixPoint == imgName){ ImgOn(imgName); }else{ ImgOff(imgName); }
}
}
//-->
</script>
</head>
<body onLoad="SetFix('mu_1_0')">
<h4>[ 클릭한 메뉴 고정하기 ]</h4>
<a href="#" onfocus=blur() onMouseOver="ImgOn('mu_1_0');" onMouseOut="SetInit();" onClick="SetFix('mu_1_0')"><img border=0 name="mu_1_0" src="http://www.01code.com/webedition/images/mu_1_0_off.gif"></a>
<a href="#" onfocus=blur() onMouseOver="ImgOn('mu_2_0');" onMouseOut="SetInit();" onClick="SetFix('mu_2_0')"><img border=0 name="mu_2_0" src="http://www.01code.com/webedition/images/mu_2_0_off.gif"></a>
<a href="#" onfocus=blur() onMouseOver="ImgOn('mu_3_0');" onMouseOut="SetInit();" onClick="SetFix('mu_3_0')"><img border=0 name="mu_3_0" src="http://www.01code.com/webedition/images/mu_3_0_off.gif"></a>
</body>
</html>
<body onresize="javascript:centerWindow();" onload="centerWindow();">
<script language="JavaScript">
<!--
function centerWindow() {
var xMax = document.body.clientWidth, yMax = document.body.clientHeight;
var xOffset = (xMax-200)/2+20, yOffset = (yMax-150)/2+40;
//중심에서 오른쪽으로 20, 아래로 40픽셀에 항상 위치하는 레이어
var divMenu = document.all['Layer1'].style;
divMenu.top = yOffset;
divMenu.left = xOffset;
}
//centerWindow();
//-->
</script>
<p><div id="Layer1" style="position:absolute; left:200px; top:80px; width:200px; height:150px;
z-index:1">
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" bgcolor=#FFFFFF style="border:#808080 1px solid;" height=150>
<span style="font-family:굴림; font-size:9pt">항상 중심에 뜨는 <br>
레이어 샘플입니다.</span><br>
<img src="http://www.google.co.kr/images/logo_sm.gif" width="150" height="55" alt="배너">
</td>
</tr>
</table>
</div>
</body>
</html>
<!--
var kzone_gift=new Array();
var random_val=new Array();
var imgURL1=
"http://img.messenger.hanmail.net/images/messenger4/mileagegift/200509/";
var imgURL2= ".jpg";
var PRESENTLIST= 16;
for(var i=0; i<PRESENTLIST; i++){
var imgCNT= i + 1;
var temimg= "";
//if(i==5)
// temimg= "_1";
kzone_gift[i]= imgURL1 + imgCNT + temimg + imgURL2;
}
var swidth = 149
var sheight = 141
var show_items = 2
var stop_time = 1500 // 아이템 동작 텀 (1초 = 1000)
var sspeed = 20 // 아이템이 움직이는 시간
var sstep = 50 // 아이템이 픽셀 이동 간격
// 내부 변수
var new_item = show_items
var sstep_tmp = sstep
var only_one = 1;
function gift_left(){
sstep=100;
setTimeout("gift_left0()", 1000)
}
function gift_left0(){
sstep=5;
}
function random_start()
{
var len = kzone_gift.length;
if( only_one == 1){
for (i=0; i<len; ){
rand = parseInt(Math.random() * len );
// rand = i;
len2 = random_val.length;
for (j=0; j<len2 ; j++){
if(random_val[j] == rand)
break;
}
if( j == len2){
random_val[i] = rand;
i++;
}
}
only_one=2;
}
}
// 동작 시작 함수
function move_left_start()
{
for (i=0; i<=show_items; i++){
setTimeout("move_left("+i+", "+swidth+")", stop_time)
}
}
// 아이템 개별 이동 함수
function move_left(id, cnt){
obj = eval('slider_'+id)
obj.style.pixelLeft-=sstep
cnt -= sstep
if (cnt > 0){
setTimeout("move_left("+id+", "+cnt+")", sspeed)
}else if (obj.style.pixelLeft < -sstep){
obj.style.pixelLeft = show_items * swidth
new_item++
if (new_item == kzone_gift.length) new_item=0
obj.innerHTML= '<img src="'+kzone_gift[random_val[new_item]]+'"></a>';
move_left_start()
}
}
//-->
</script>
<table width="476" height="148" background="http://img.messenger.hanmail.net/images/messenger4/giftbg01.gif" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" style="padding: 2,5,0,15">
<script language="javascript">
<!--
random_start();
move_left_start();
if (document.all){
document.writeln('<div align=center onmouseover="sstep=0;" onmouseout="sstep='+sstep_tmp+';" style="position:absolute;width:100%;height:'+(sheight)+';clip:rect(0 100% '+(sheight)+' 0); ">')
var tleft = 0
for (i=0; i <= show_items; i++) {
if (i > 0) {
tleft += eval('slider_'+(i-1)+'.style.pixelWidth')
}
document.writeln('<div align=center id="slider_'+i+'" style="position:absolute;left:'+i*swidth+';width:'+swidth+';top:1;">')
document.writeln('<img src="'+kzone_gift[random_val[i]]+'"></a>');
document.writeln('</div>')
}
document.writeln('</div>')
}else{
document.writeln('<br style="line-height:2px;">');
document.writeln('<table><td widht="20" nowrap> </td><td>');
for (i=0; i <3; i++) {
document.writeln('<img src="'+kzone_gift[random_val[i]]+'" height="140">');
}
document.writeln('</td></table>');
}
//-->
</script>
</td>
</tr>
</table>
event.shiftKey
event.altKey
event.ctrlKey
다른 키보드와 함께 이 SHIFT, CTRL, ALT키가 눌려졌는지 체크하려면 위에 언급한 속성들이 true인지를 체크만 하면 된다. 위의 예는 인터넷 익스플로러의 예이다. 넷스케이프에서는 modifiers란 하나의 속성에서 이 값들을 관리한다. 넷스케이프에는 Event 객체에 이와 관련한 다음과 같은 상수 값을 가지고 있다.
SHIFT_MASK
ALT_MASK
CONTROL_MASK
META_MASK
만일 넷스케이프에서 다른 키보드와 이 SHIFT, CTRL, ALT키가 눌려졌는지 체크하려면 비트와이즈(bitwise) AND 연산자를 사용하여 알아내면 된다. 예를 들어 ALT 키가 눌려졌는지 체크하려면 다음과 같이 하면 된다.
e.modifiers & Event.ALT_MASK
실제 예를 살펴보자.
<BODY ... onKeyPress="handlePress(event)">
<SCRIPT LANGUAGE="JavaScript">
<!--
function handlePress(e) {
var shiftPressed = (window.Event) ? e.modifiers & Event.SHIFT_MASK : e.shiftKey
if (shiftPressed) {
alert("현재 페이지에서 SHIFT키는 사용할 수 없습니다!");
return false;
}
else return true;
}
// -->
</SCRIPT>
...
...
</BODY>
위의 소스 코드에서 인터넷 익스플로러와 넷스케이프를 구분하는 코드는 '(window.Event) ?' 부분이다. 이 값이 참이면 넷스케이프이고 거짓이면 인터넷 익스플로러로 간주한다.
다른 ALT키와 CTRL키도 위와 같은 방법으로 잡아낼 수가 있다.
근데 아쉽게도 파폭에선 안되네요... 그동안 잘 안 쓴 이유도 그때문인데 그럼에도 불구하고 오늘 어떤 사이트에 적용했다가 (찾아보니 다른건 거의 플래시용이라) 팁으로도 올립니다.
그누에 적용하시려면 아래 소스를 따로 /g4/js/qmenu.js 등의 이름으로 저장한 다음
head.sub.php에서
<script language="javascript" src="<?=$g4['path']?>/js/common.js"></script>
<script language="javascript" src="<?=$g4['path']?>/js/ajax.js"></script>
<script language="javascript" src="<?=$g4['path']?>/js/qmenu.js"></script>
<body topmargin="0" leftmargin="0" <?=isset($g4['body_script']) ? $g4['body_script'] : "";?>>
<a name="g4_head"></a>
이런 식으로 추가해주면 됩니다.
///////////////여기부터 퀵메뉴 소스
document.write('<div id=floater style=\"position:absolute; left:1000px; top:300px; z-index:100;\">');
document.write('<a href=\"#g4_head\" onfocus="this.blur()">Top</a><br>');
document.write('<a href=\"javascript:history.go(-1)\" onfocus="this.blur()">Back</a></div>');
self.onError=null;
currentX = currentY = 0;
whichIt = null;
lastScrollX = 0; lastScrollY = 0;
NS = (document.layers) ? 1 : 0;
IE = (document.all) ? 1: 0;
<!-- STALKER CODE -->
function heartBeat() {
if(IE) {
diffY = document.body.scrollTop;
diffX = 0;
}
if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }
if(diffY != lastScrollY) {
percent = .1 * (diffY - lastScrollY);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelTop += percent;
if(NS) document.floater.top += percent;
lastScrollY = lastScrollY + percent;
}
if(diffX != lastScrollX) {
percent = .1 * (diffX - lastScrollX);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelLeft += percent;
if(NS) document.floater.top += percent;
lastScrollY = lastScrollY + percent;
}
}
if(NS || IE) action = window.setInterval("heartBeat()",1);
////////////여기까지
function autoblur() {
if(event.srcElement.tagName == "A") document.body.focus();
}
document.onfocusin = autoblur;
g4/js/common.js 맨아래에 위의 내용을 추가해줍니다.
(익스플로러에서만 되내요)
1. frame_name.location = 'url.php';
또는 frame_name.location.href = 'url.php';
또는 frame_name.location.replace('url.php')
2. parent.frame_name.location = 'url.php';
3. opener.parent.frame_name.location = 'url.php';
새창을 열게해준 창의 주소를 바꾸고 새창을 끈다.
<script>
opener.location.href = 'url.php';
self.close();
</script>
새창을 열게해준 창의 주소를 새로고침하고 새창을 끈다
<script>
opener.location.reload();
self.close();
</script>
다른 프래임의 주소를 바꾸게 하려면
<script>
frame_name.location.href = 'url.php';
</script>
프래임 구조상 상위 프래임의 주소를 바꾸게 하려면
<script>
parent.location.href = 'url.php';
</script>
타겟이 지정된 프레임을 바꾼다.(타겟하나)
<script>
parent.target(타겟).location.href = 'url.php';
</script>
타겟이 지정된 프레임을 바꾼다.(타겟둘)
<script>
parent.target1(타겟1).location.href = 'url1.php';
parent.target2(타겟2).location.href = 'url2.php';
</script>
타겟이 지정된 프레임을 바꾼다.(타겟셋)
<script>
parent.target1(타겟1).location.href = 'url1.php';
parent.target2(타겟2).location.href = 'url2.php';
parent.target3(타겟3).location.href = 'url3.php';
</script>
타겟이 지정된 프레임두개를 클릭으로 바꾸려면
<script>
function target_frame(url1, url2)
{
parent.top_frame.location.href = url1;
parent.main_frame.location.href = url2;
}
</script>
<a href="javascript:target_frame('main_menu.html', '$go_url');"> 확인 </a>
로그인페이지 에선
<script>
parent.top_frame.location.href = '../main.html'; //main.html는 로그인페이지 보다 상위디렉토리에 있다.
parent.main_frame.location.href = '$go_url';
</script>
로그인페이지를 새창으로 띄웠다면
<script>
opener.parent.top_frame.location.href = '../main.html';
opener.parent.main_frame.location.href = '$go_url';
self.close();
</script>
[펌] http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=5317&sfl=&stx=&sst=wr_hit&sod=desc&sop=and&page=36
<script language=javascript>
function get_image_size(id) {
img = document.body.appendChild(document.createElement('img'))
img.src = id.src;
var w = img.offsetWidth;
var h = img.offsetHeight;
document.body.removeChild(img);
return {width:w,height:h};
}
function how_size(img) {
var size = get_image_size(img);
alert('width:'+size.width+',height:'+size.height);
}
</script>
<iframe src="sub_4_1.php" frameborder="0" width="620" name="youknow" scrolling="no"></iframe> <--iframe name 설정
불러올 페이지
<script>
function initsize() {
self.resizeTo(document.body.scrollWidth, document.body.scrollHeight);
}
</script>
<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" onLoad="initsize();">
설정
-----------------------------------------------------------------------------------
수정~
<script>
function initsize() {
self.resizeTo(document.body.scrollWidth , document.body.scrollHeight + 10);
}
</script>
<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" onLoad="initsize();">
newWin = window.open(""+url+"","show","width="+width+",height="+height+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+scrollbars+",resizable=no");
}
요즘 ajax를 좀끄적이다 보니 괜찮은 자료가 있어서 올려놓는다..
좋은 자료인거같다.. 샘플구하기가 쉽지많은 않다..
//XMLHttpRequest 객체생성
var oXmlHTTP = getXmlHttp();
if (window.XMLHttpRequest)
{
oXmlHttp = new XMLHttpRequest();
}else{
oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
oXmlHTTP.open("POST", "AJAX.asp", false); // 동기방식으로 연결
//리퀘스트 내용을 XML문자열로 만든다. ASP는 기본적으로 EUC-KR로 처리하기 때문에 따로 정의할필요는 없습니다.
//한글을 전송할때는 태그내용을 <![CDATA[ ]]>로 선언해야 합니다.
var strXML = "";
strXML = strXML + "<gwinaemi>";
strXML = strXML + "<strList><![CDATA[내용]]></strList>";
strXML = strXML + "</gwinaemi>";
//리퀘스트 전송
oXmlHTTP.send(strXML);
//받아온 XML문자열에서 에서 strList태그의 내용을 추출 viewText객체의 innerHTML 로 넣는다.
eId("viewText").innerHTML = oResXML.getElementsByTagName("strList").item(0).firstChild.nodeValue;
--------------------------------------------------------------------------------------------------------------
'''''AJAX.asp파일쪽의 처리
'''''받아온 XML문자열을 Request.BinaryRead로 읽어서
'''''microsoft.xmldom 파서로 읽어 Scripting.Dictionary객체로 반환
'''''필요한 리퀘스트 내용은 딕셔너리에서 호출한다.
Dim vntPostedData, lngCount
lngCount = Request.TotalBytes
vntPostedData = Request.BinaryRead(lngCount)
Dim oXMLDom
Set oXMLDom = Server.CreateObject("microsoft.xmldom")
oXMLDom.load(vntPostedData)
Dim oDicXMLRequest
set oDicXMLRequest = Server.CreateObject("Scripting.Dictionary")
If oXMLDom.parseError = 0 Then
Dim objNode
Set objNode = oXMLDom.documentElement
set oXMLDom = nothing
Dim i
For i = 0 To objNode.childNodes.length - 1
oDicXMLRequest.Add objNode.childNodes.Item(i).nodeName, objNode.childNodes.Item(i).Text
Next
set objNode = nothing
else
set oXMLDom = nothing
End if
Response.ContentType = "text/xml"
Response.Charset = "ks_c_5601-1987"
''''''''''''''''XML문서의 형태로 돌려보낸다. encoding을 ASP의 기본엔코딩인 ks_c_5601-1987로 지정한다.
Response.write "<?xml version=""1.0"" encoding=""ks_c_5601-1987""?>" & chr(13) & chr(10)
''''''''''''''''oDicXMLRequest에서 strList의 내용을 불러낸다.
Response.write "<gwinaemi><strList><![CDATA[" & oDicXMLRequest("strList") & "]]></strList></gwinaemi>"
<%
'// 수요일 구하는 프로그램
SELECT Case Weekday(Now)
Case "1" '// 일요일
tmp = 3
Case "2" '// 월요일
tmp = 2
Case "3" '// 화요일
tmp = 1
Case "4" '// 수요일
tmp = 0
Case "5" '// 목요일
tmp = 6
Case "6" '// 금요일
tmp = 5
Case "7" '// 토요일
tmp = 4
End Select
Response.Write tmp & "<br>"
If tmp = 0 Then '// 수요일이므로 해당사항 없음
newDate = Now()
LastDate = DateAdd("d",2,newDate) '// 금요일 구하기
Else
newDate = DateAdd("d",tmp,Now())
LastDate = DateAdd("d",2,newDate) '// 금요일 구하기
End If
Response.Write NewDate
%>
'// 매주 수요일 구하는 프로그램 따라해 봅시다~
C:\WINDOWS\system32\inetsrv\MetaBase.xml
886라인에 보면..기본값으로..
AspMaxRequestEntityAllowed="204800"으로 되어있습니다.
단위는 byte단위죠. 즉 200k..
이 값을 변경시켜주면. 200k이상도 업로드가 됩니다
1.관리도구->서비스에서->IIS Admin Service를 중지시킵니다.(HTTP,SMTP등 서비스가 같이 중단됨)
2.C:\WINDOWS\system32\inetsrv\MetaBase.xml를 편집기(메모장등)으로 열고.
886라인 또는 Ctrl+F로 찾기로.. AspMaxRequest로 검색하면,
AspMaxRequestEntityAllowed="204800"이 숫자값을 변경시켜주시면 됩니다.
2메가 로 하시려면, 2048000으로 하시면 되구요. 적당히.. 변경해주시면 됩니다.
수정하시고, 저장합니다. 저장이 안되면, 1번과정을 해주세요.
3. 서비스에서 IIS Admin Service를 다시 시작합니다.
iis를 열어서.. 웹서비스,SMTP등을 시작하십시오..
이제 자료실 파일 첨부시, 200k 이상이 잘 됩니다..
|
예 : 웹문서 루트디렉토리(이하 루트, 최초 index.html 파일이 위치한 곳)에다가 복사
또한 거의 모든 디렉토리 설정은 루트를 기준("/")으로 설정을 합니다.
- class.WebEditorGenerator.js을 오픈을 합니다. (모든 설정은 이 파일에서 할수 있습니다.)
/////////////////////////////////////////////////////////////////////////////////////////////////
// config Start
/////////////////////////////////////////////////////////////////////////////////////////////////
// Basic Directory
var WebEditor_Basic_Dir = '/WebEditor'; -- ①
// Basic Btn Lists
// '|' is separator
// '-' is new line
var WebEditor_Btns = {
'Basic' :['Source','|','Cut','Copy','Paste','|','Undo','Redo','|','Bold',....
'Extend' :['FontName','FontSize','ForeColor','BackColor','|','CreateLink',...
'Advanced' :['Table','TableProperties','TdProperties','|',...
};--②
// Emoticon Popup Size(Width, Height);
var WebEditor_Emoticon_popup_size = new Array("700px", "500px");--③
// Emoticon Icon Directory
var WebEditor_Emoticon_Dir = WebEditor_Basic_Dir + "/emoticon/fun";--④
// Emoticon Icon, Row Print Icon Number;
var WebEditor_Emoticon_Num = 10;--⑤
// UpLoad Directory
var WebEditor_Upload_Dir = '/_data/user_imgs';--⑥
// UpLoad Size
var WebEditor_Upload_Size = 2048; // KB (1MB = 1024KB)--⑦
// User CSS & Preview CSS
var WebEditor_User_CSS = '/css/style.css';--⑧
// P tag to br tag
var WebEditor_Convert_Tag_P = true;--⑨
/////////////////////////////////////////////////////////////////////////////////////////////////
// End
/////////////////////////////////////////////////////////////////////////////////////////////////
① WebEditor가 위치한 디렉토리 (예 : "/WebEditor")
② 툴바에 포함된 버튼 리스트 편집
'|' -> 세로 구분자
'Basic', 'Extend', 'Advanced' 는 행을 나타냅니다. 각행에 포함된 버튼들은 서로 다른행으로 이동가능합니다.
'About' 는 삭제를 하실 수 없습니다. (위치 변경은 가능합니다.)
③ 이모티콘 팝업 사이즈를 설정 (가로픽셀, 세로픽셀)
④ 이모니콘 디렉토리 위치를 설정 (해당디렉토리의 모든 이미지파일을 이모티콘으로 쓸수 있습니다.)
⑤ 한줄에 출력되는 이모티콘의 개수를 설정을 합니다.
⑥ 이미지 삽입시 업로드를 할 경우 업로드 디렉토리를 설정을 합니다. 역시 루트부터 시작을 하며,
타인에 대해 쓸수 있도록 퍼미션 설정을 하셔야 합니다.
가령 /data 가 파일을 저장하는 공간이라면 var WebEditor_Upload_Dir = '/data';입니다.
* upload directory 는 서버에 관련된 부분이므로 user의 게정에 따라 다릅니다. 설정에러가 날경우는. 질/답란에 질문을 올려 주세요
⑦ 업로드 할 수 있는 사이즈를 결정합니다. (KB 단위 | 1메가(MB) = 1024KB) 입니다.
⑧ WebEditor과 미리보기시 적용할 스타일 시트를 설정합니다.
⑨ 엔터키 입력시 2줄 이면 false, 한줄이면 true
지금부터는 WebEditor를 삽입해 보도록 하겠습니다.
- 루트의 /test/test.html 에 삽입을 한다면.
- test.html을 오픈을 합니다.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>Untitled Document</title>
<script language="javascript" src="/WebEditor/class.WebEditorGenerator.js"></script>
</head>
<body>
</body>
</html>
<textarea id='WebEditor'>TEST</textarea>
<script language="javascript">
var e = new WebEditorGenerator('WebEditor', "100%", "200px");
e.generate();
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>Untitled Document</title>
<script language="javascript" src="/WebEditor/class.WebEditorGenerator.js"></script>
</head>
<body>
</body>
</html>
<textarea id='WebEditor'>TEST</textarea>
<script language="javascript">
var e = new WebEditorGenerator('WebEditor');
e.generate();
</script><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>Untitled Document</title>
<script language="javascript" src="/WebEditor/class.WebEditorGenerator.js"></script>
</head>
<body>
</body>
</html>
<textarea id='WebEditor'>TEST</textarea>
<script language="javascript">
(new WebEditorGenerator('WebEditor')).generate();
</script>
이제는 브라우져를 통해서 확인하실 수 있습니다.
개발자를 위한 몇 가지 메소드
WebEditor는 사용 편의상 몇가지 외부에 제공되는 메소드를 포함합니다.
WebEditor의 값을 얻는다거나 또는 TEXTAREA로의 변경 및 focus 이동등을 하실 수 있습니다.
또한 WebEditor 값을 확인하여 자바스크립트의 값 체크등으로 사용하실 수 있습니다.
void WebEditorGenerator(String id, Int width, Int height) |
|
void generate(void) |
|
void setMode(String sMode) |
|
String getMode(void) |
|
String getValue(void) |
|
void focus(void) |
|
출처 - http://home.mytnt.co.kr
홈페이지 http://www.interspire.com/devedit/
데모 http://www.interspire.com/devedit/demo.php
CHEditor (쓸만한데 설치 하는데 좀 막히는 부분이 있다.)
홈페이지 http://www.chcode.com
데모 http://www.chcode.com/cheditor/demo.html
WebEditor V 1.53 Build 41 (마우스 오른쪽으로 테이블, 이미지등 편집 가능. 쓸만하다.)
홈페이지 http://mytnt.co.kr/
데모 http://mytnt.dnip.net:8080/develop/?p=preview (늦게 뜨면 아래 링크 사용)
데모 http://web.gso.co.kr/~sea88/bbs/WebEditor/example.html
basic (쓸만함 HTMLarea와 비슷하다.)
홈페이지 http://www.basic.pe.kr/
데모 http://www.basic.pe.kr/bbs/zboard.php?id=basic_board (자게 글쓰기 클릭)
데모 http://web.gso.co.kr/~sea88/bbs/zboard.php?id=community (우리집 게시판중에 수정해서 쓰고있음. 글쓰기 클릭)
FCKeditor (걍 그저 그렇습니다. 근데 글자 색은 바꿀수 없는거야?)
홈페이지 http://sourceforge.net/projects/fckeditor
데모 : http://www.fredck.com/FCKeditor/Demo/
HTMLarea (가장 많이 쓰는것 같습니다. 쓸만함. htmlarea 3.0 버전은 모질라에서도 익스랑 똑같이 작동 한답니다.)
홈페이지 http://sourceforge.net/projects/itools-htmlarea
데모 : http://www.interactivetools.com/products/htmlarea/index.html#demo
SPAW (보기는 좋지만...엄청 늦게 떠서 탈....약간 비추.)
홈페이지 http://sourceforge.net/projects/spaw/
데모 : http://www.solmetra.com/spaw/demo/demo.php
hypertextare (버튼이 묵직한것이...아마고쳐 써야 할듯...에러의 압박. 비추비추)
홈페이지 http://sourceforge.net/projects/hypertextarea
데모 : http://www.muckum.de/ht
RichText-editor (그저 그렇다. 비추비추비추)
홈페니지 http://sourceforge.net/projects/richtext
데모 : http://richtext.sourceforge.net
aynHTML (소스 보기 하니 컬러로 나옵띠다. ;; 따운 받는데가 어딘지...)
홈페이지 http://sourceforge.net/projects/aynhtml
데모 : http://www.aine.be/aynhtml
web-based WYSIWYG HTML editor (아직 안써봤는데 스샷으로 대신...)
스샷,다운 http://www.unica.edu/uicfreesoft/wysiwyg_web_edit/info_wysiwyg_web_edit_eng.html
RichTextBox™ v2.0
홈페이지 http://richtextbox.com/Default.aspx
데모 http://richtextbox.com/richtextbox/demos/0/
XsDhtmlEdito (이건 안써봐서 모름)
홈페이지 http://sourceforge.net/projects/xsdheditor
데모 없음
bpEditor (이것도 안써봤는데....)
홈페이지 http://sourceforge.net/projects/bpeditor
ASP를 이용하여 엑셀 파일을 만드는 방법에는 여러 가지가 있다. 여기에는 웹 서버 쪽에서 작업을 하게 하는 방법도 있고, 클라이언트 쪽에서 작업을 하게 하는 방법이 있다. 이 중 여기서는 클라이언트 쪽에서 작업을 하게 하는 방법에 대해 살펴볼 것이다. 이 방법은 아주 간단하면서도 필요할 경우 유용하게 사용할 수 있다.
이 강좌의 내용을 배우고 나면 다음과 같은 결과물을 만들 수 있을 것이다.
우선 해야할 일은 엑셀 파일에 삽입할 표를 하나 만드는 것이다. 다음과 같은 내용이 들어 있는 HTML 코드를 작성해 보도록 하자.
회사 주소록
ASP에서 엑셀 파일을 만드는 방법에 대한 예제입니다.
날짜 | 이름 | 내선번호 | 부서 | 주소 |
---|---|---|---|---|
2001.08.01 | Daniel Joe | 4286 | 미디어 사업부 | 서울시 서초구 서초동 1306-6 |
2001.08.02 | Peter Lee | 4285 | 연구소 | 서울시 서초구 방배 2동 1234-56 |
2001.08.14 | Tapestry | 4280 | 전략 기획실 | 경기도 과천시 원문동 2번지 |
이제 위에서 작성한 HTML 태그 앞에 다음과 같은 ASP 코드를 삽입하도록 하자.
<% |
이렇게 해서 만들어진 결과물은 다음과 같다:
엑셀 프로그램이 설치되어 있을 경우 위 링크를 클릭하면 브라우저 상에서 직접 엑셀 파일로 열어볼 수가 있다. 만일 설치되어 있지 않다면 클라이언트 컴퓨터로 다운로드 받을 수 있다. 이렇듯 웹 페이지의 내용을 동적으로 엑셀 파일로 만들어 낼 수가 있다.
이렇게 해서 실행된 결과 화면은 다음과 같다:
이와 관련된 전체 ASP 코드를 살펴 보면 다음과 같다:
<% |
마찬가지로, ASP 코드로 삽입된 MIME 타입을 약간만 수정하면 웹 페이지의 내용을 워드 파일이나 파워포인트 파일로 생성해 낼 수 있다.
워드 파일 <% 파워 포인트 파일 <% |
위의 MIME 타입을 바꾼 결과를 직접 확인하려면 아래 링크를 클릭해 보기 바란다.
지금까지 살펴 본 방법은 응용하기에 따라 간단하면서도 유용한 팁이 될 수 있다. 만일 데이터베이스와 결합하여 사용한다면 좀 더 유용할 것이다.
지금 현재 보고 있는 웹 페이지 앞 부분에 Response.ContentType = "application/msword" 부분만 삽입하여 동적으로 워드 파일을 만든 결과는 다음과 같다.
<object runat="server" progid="ADODB.Recordset" id="rs"></object>
<object runat="server" progid="ADODB.Recordset" id="oRs"></object>
<object runat="server" progid="ADODB.Connection" id="dbCon"></object>
<object runat="server" progid="CDONTS.NewMail" id="objMail"></object>
<%
Response.Expires = -1
Response.AddHeader "Pragma", "no_cache"
Response.AddHeader "cache-control", "no_cache"
Const dbConStr = "Provider=SQLOLEDB.1;Initial Catalog=BIZ_INFO;Data Source=localhost;User ID=User;PWD=PW"
dbCon.Open("dbConStr")
dbCon.BeginTrans '트랜잭션을 시작
SQL = "insert into office(idx, o_name,addr) values "
SQL = SQL & " (" & request("id") & ""
SQL = SQL & ",'" & request("name") & "'"
SQL = SQL & ",'" & request("addr") & "'"
dbCon.execute SQL
If dbCon.errors.count > 0 then
dbCon.RollbackTrans '에러일 경우 이전상태로 복구
Response.write "<script language='javascript'>"&chr(13)
Response.write " alert('데이터를 저장하는중 에러가 발생하였습니다.\n관리자에게 문의하시기 바랍니다.');"&chr(13)
Response.write " history.back();"&chr(13)
Response.write "</script>"&chr(13)
dbCon.Close
Response.end
Else
dbCon.CommitTrans '에러가 없을 경우 완료
Response.write "<script language='javascript'>"&chr(13)
Response.write " alert('데이터가 성공적으로 처리되었습니다.');"&chr(13)
Response.write "</script>"&chr(13)
dbCon.Close
End If
Response.Redirect "office_list.asp
%>