<script type="text/javascript">

if (navigator.userAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null
|| navigator.userAgent.match(/LG|SAMSUNG|Samsung/) != null)
{
alert('모바일접속');
}

</script>
var nLayerWidth = 400;               
var nLayerHeight = 200;             

var nLeft = (document.body.scrollLeft + (document.body.clientWidth / 2)) - (nLayerWidth / 2);
var nTop = (document.body.scrollTop + (document.body.clientHeight / 2)) - (nLayerHeight / 2);

var layer = document.createElement('div');                 // div element 생성
layer.style.cssText = "position:absolute;left:" +  nLeft + "px;top:" + nTop + "px;width:" + nLayerWidth + "px;height:" + nLayerHeight  + "px;";                           // css 적용
document.body.appendChild(layer);                          // 생성한 div 표시


tip>
appendChild(layer) 의 반대는?
layer.parentNode.removeChild(layer);           // layer element 제거

//이미지 크기에 맞는 팝업창 띄우기
 var imgObj = new Image();
 function ShowImgWin(imgName)
 {
     imgObj.src = imgName;
     setTimeout("CreateImgWin(imgObj)", 100);
 }
 
 function CreateImgWin(imgObj)
{
    if (! imgObj.complete)
    {
         setTimeout("createImgWin(imgObj)", 100);
         return;
    }
  
    imageWin = window.open("", "imageWin", "width=" + imgObj.width + ",height=" + imgObj.height);
    imageWin.document.write("<html><center><body style='margin:0'>");
    imageWin.document.write("<table width='100%' height='100%' onclick='self.close();' style='cursor:pointer'>");
    imageWin.document.write("<tr><td width='100%' height='100%' align='center' valign='middle'>");
    imageWin.document.write("<img src='" + imgObj.src + "' border=0></td></tr></table>");
    imageWin.document.write("</body></center><html>");
    imageWin.document.title = imgObj.src;
}


실행예 > ShowImgWin("http://~/test.gif");


// 공백 제거
String.prototype.trim = function()
{
  return this.replace(/(^\s*)|(\s*$)/gi, "");
}

// 문자열내의 모든 str1을 str2로 바꾸기
String.prototype.replaceAll = function(str1, str2)
{
  var temp_str = "";

  if (this.trim() != "" && str1 != str2)
  {
    temp_str = this.trim();

    while (temp_str.indexOf(str1) > -1)
    {
      temp_str = temp_str.replace(str1, str2);
    }
  }

  return temp_str;
}


사용예 )
   var strValue = '123aa123';
   document.write(strValue.replaceAll( '123', 'a');
   
   // 결과 : aaaa

* String.prototype.replaceAll = function(str1, str2)  <-- 요 부분이 이해가 안가시는 분은
http://www.prototypejs.org/learn/class-inheritance <-- 요기 참조해보세요.
String 클래스에 replaceAll 이라는 함수를 추가한다... 뭐 이런거에요.

 

 


// 밀리초를 시간으로 표시 (hh:mi:ss)
function DisplayTime(nMSec)
{
     var nTotalSec = parseInt(nMSec / 1000); 

     var nTotalMin = parseInt(nTotalSec / 60); 
     var nHour = parseInt(nTotalMin / 60);
     var nMin = nTotalMin % 60;
     var nSec = nTotalSec % 60; 

     return ( (nHour < 10) ? "0" : "" ) + nHour + ":" + ( (nMin < 10) ? "0" : "" ) + nMin + ":" + ( (nSec < 10) ? "0" : "" ) + nSec;
}

function CheckValue(strValue)
{
       var strReg = /^[A-Za-z0-9]+$/; 

       if (!  strReg.test(strValue) )
       {
alert('영문과 숫자만 입력가능합니다.');
return;
       }
}

자바스크립트로 쿼리스트링 값 받아오기...흠.

function GetParameter(sName)
{

 var sUrl = location.href;
 var nStartPoint = sUrl.indexOf("?");
 var sQueryStr = sUrl.substring(nStartPoint + 1, sUrl.length);
 var arrName = new Array();
 var arrValue = new Array();
 var nNextStartPoint = 0;
 var sItem;
 var nValuePoint;
 
 while (sQueryStr.indexOf("&") > -1)
 {

  nNextStartPoint = sQueryStr.indexOf("&")
  sItem = sQueryStr.substring(0, nNextStartPoint);
  nValuePoint = sItem.indexOf("=");
  arrName[arrName.length] = sItem.substring(0, nValuePoint);
  arrValue[arrValue.length] = sItem.substring(nValuePoint+1, sItem.length);
  sQueryStr = sQueryStr.substring(nNextStartPoint+1, sQueryStr.length);

 }
 
 sItem = sQueryStr;
 nValuePoint = sItem.indexOf("=");
 arrName[arrName.length] = sItem.substring(0, nValuePoint);
 arrValue[arrValue.length] = sItem.substring(nValuePoint+1, sItem.length);
 
 var sValue = "";
 for(var cnt = 0; cnt < arrName.length; cnt++)
 {
       if (arrName[cnt] == sName)
      {
                sValue = arrValue[cnt];
      }
 
 }
 
 return sValue;

}

 예> ..../test.html?params=1234 

GetParameter("params");     // 결과 : 1234

function CheckNumber(num)
{
    if(isNaN(num)) { alert("숫자만 입력할 수 있습니다.");return ""}           
    return num
}

<input type="text" onKeyUp="this.value=CheckNumber(this.value)">
function IsEmail( strEmail )
{
return (/^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.)+([0-9a-zA-Z-]+)([\.0-9a-zA-Z-])*$/.test( strEmail ) );
}
업로드 페이지에 항상 <input type=file>을 이용했는데..
어제 iE8로 업그레이드하고 난 후부터, 파일을 찾을 수 없다하여.. 확인해보니.. 잰장
지멋데로 IE8이 경로를 바꿔버린다.
네이버씨에게 물어봤더니 아래와 같이 알려주더라.  이젠 어쩌란 말인가?
헉~

IE8 정식버전에서 변경된 점 몇가지.

1. <input type=file>

<input type=file> 에서 javascript-x로 value 값을 얻어오지 못함. 이는 파일의 경로에 사용자의 이름이나 profile 등의 정보가 포함되어 있을수 있어 보안상의 문제로 얻어올 수 없게 함.

단, [ 보안설정 > 인터넷 영역 > 파일을 서버에 업로드할 때 로컬 디렉터리 경로 포함 ] 옵션이 '사용'으로 선택된 경우는 이전과 같이 동작. 따라서 기본적으로는 js로 파일의 value를 얻어올시 단순하게 파일명만을 얻어오게 됨. (RC1 버전까진)

하지만 파일명만을 얻어오게 되면 기존 js 스크립트에서 <input type=file>에서 얻어온 value를 파싱 할때 \를 이용해 파일명 등을 구분해 사용하던 기존 스크립트는 에러를 발생하게 되기 때문에, 이에 대한 호환성을 유지하기 위해 [ C:\fakepath\파일명.확장자 ] 형태로 value 값이 넘어오도록 정식버전에선 RC1과 다르게 변경됨.

즉, 실제 파일이 C가 아닌 D드라이브에 있다고 하더라도 return 되는 값은 C:\fakepath\...로 넘어오게 되는데, 실제 서버에 전송될때에는 이 형태가 전송되는 것은 아니다. 이것은 단지 기존 스크립트와의 호환성을 위해 MS에서 파일명앞에 추가되도록 한 것일 뿐이다.

Opera 10 alpha 버전에서는 C:\fake_path\ 와 같은 형태로 적용되어 있으나, IE에서는 폴더명에 특별문자가 포함되는 것을 원하지 않았고, 또한 폴더명이 8글자 내외로 처리되길 원했기 때문에 underscore를 빼고 설정.

값을 얻어오는 것도 안되지만, 할당하는 것도 안된다. 즉, js로 file control value 값을 얻거나 할당하지 못하기 때문에 사용자가 file을 선택한 형태로만 작업을 처리해야 한다.

추가 (3/26) :
HTML 5 권고사항으로 관련 이슈가 포함 되었다.


2. IE7과의 호환성 향상을 위해 RC1과 달라진 점

IE7 standard mode에선 아래의 기능들에 대한 사용이 제한됨.

a. JSON object hidden
b. [DOM object].toString() 은 다시 원복되어, IE7과 같이 [object]만 return
c. object.defineProperty/object.getOwnPropertyDescript-xor API hidden


+ 참고 link :

+ Recent posts