아이폰에서는 callto 형식을 인식 할수 없다.

데스크탑에서는 인식하겠지만...


<a href="callto:0123456789">call me</a>

아이폰인 경우는 링크를 교체해주도록 한다.

window.onload = function () {
 
if (navigator.userAgent.match (/iPhone/i)) {
   
var a = document.getElementsByTagName ("a");
   
for (var i = 0; i < a.length; i++) {
     
if (a[i].getAttribute ('href').search (/callto:/i) === 0) {
        a
[i].setAttribute ('href', a[i].getAttribute ('href').replace (/^callto:/, "tel:"));
     
}
   
}
 
}
};

posted by ned3y2k

숫자만 입력해야 하는 경우에 아래 내용을 그대로 사용하시면 됩니다.

function pressKeyCheck(e) {
 if (e.charCode < 0x30 || e.charCode > 0x39) {
  return false;
 }
}

$('input[name=?]').keypress(pressKeyCheck);

0x30과 0x39는 아스키 테이블 기준 숫자 0~9까지입니다,.
posted by ned3y2k
많은 분들이 prototype 를 재정의(오버라이딩)라고! 정리해두셔서 적어둡니다.
물론 틀린 말도 아닙니다만^^ 

모든 객체 또는 클래스(틀)에 원하는 프로퍼티(변수)나,  메서드(함수)를 추가하는 것입니다.
의미가 좀 다릅니다.

자바스크립에는 오버로딩을 지원하지 않습니다.
그러나 가변 인자로 받을수 있지요.
많은 스크립트 언어의 공통점이 아닌가합니다^^
PHP도 물론 그렇구요.

너무 딴이야기로 새어나왔군요.
예제를 보면서 익혀보도록 하지요.

myName = "My name is Smile Man"; 
String.prototype.alert = function () {
    alert(this.valueOf());

myName.alert();

결과
 My name is Smile Man이 메시지창에 출력됩니다!

다시 설명
물론 다른언어들에서의 원칙적으로 myName을 선언은 String.prototype... 아래 있어야 합니다.
그러나 javascript 특성상 모든 상황이 아무때나 바뀔수 있습니다.
그래서 기존에 생성했던 객체들도 영향을 받는것입니다.

prototype를 이용하면 왜 재정의가 되는가?
prototype 부분을 자세히 살펴보면!
http://www.w3schools.com/jsref/jsref_prototype_string.asp

위에 문서를 보면 함수나 메서드가 아닌 프로퍼티라고만 되어 있습니다.
그렇습니다. 자바스크립트는 메서드를 프로퍼티 처럼 관리를 합니다.
때문에 런타임으로 메서드가 바뀔수 있습니다.

물론 함수(클래스에 소속되어 있지 않은)도 마찬가지이지요.
 
prototype 는 해당 프로퍼티에 해당하는 프로퍼티에 메서드나 프로퍼티를 재할당하게 될것입니다.
그래서 재정의라고 말하시는거구요^^

 요점
javascript에서 class에 메서드도 프로퍼티처럼 관리한다.(단 private 메서드를 제외한다.)
오버라이딩(재정의)라고 하는것 보다 추가라고 하는편이 더 맞는 표현이다.

제 생각을 정리해본 자료이므로 다소 틀릴수 있습니다^^ 그러므로 태클 환영입니다. 
posted by ned3y2k
자바스크립에서는 기본적으로 trim이라는 함수를 만들어두지 않았다.

function trim(obj) {
    return obj.replace(/^\s+|\s+$/g,"");
}
function ltrim(obj) {
    return obj.replace(/^\s+/,"");
}
function rtrim(obj) {
    return obj.replace(/\s+$/,"");
}

ex:)
var testvar = "  abcd  ";
testvar=trim(abcd);
document.write(testvar);

result:
abcd

위 내용을 객체지향적으로 응용해보자! -2011.9.26 추가

String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function () {
    return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function () {
    return this.replace(/\s+$/,"");
}
posted by ned3y2k
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineGetter
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineSetter 
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/set
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/get 
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Objects#Using_Object_Initializers 

http://msdn.microsoft.com/ko-kr/magazine/cc163419.aspx#S5 
posted by ned3y2k
자바스크립트로도 객체 지향을 구현할수 있지만 많은 이가 잘 모르는것 같다.
http://dev.naver.com/tech/ajaxui/ajaxui_3.php#a_3_5

네이버에서 상당히 잘 설명해주었다. 

http://ko.wikipedia.org/wiki/프로토타입_기반_프로그래밍
이 문서 또한 참고해볼만 하다. 
posted by ned3y2k

var allowConfirm = true;

window.onbeforeunload = confirmExit;


var msg = "이 동작은 본 사이트에서 허용하지 않는 동작입니다.\n계속 하시면 정상적인 작동이 되지 않을수 있습니다.";

function confirmExit() {

if (allowConfirm) {

return msg;

} else {

allowConfirm = true;

}

}


여러부분으로 응용할수 있는 코드가 아닌가 한다^^

posted by ned3y2k