반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형
Posted on . Written by



지난주 금요일의 GMIC 세션은 정말 호황리에 마쳤습니다. 많은 분들이 참여해 주셨어요.. -8000여분이 넘는 사업가,투자가 그리고 개발자분들이 참여해 주셨습니다. 먼저 Corona를 선보였습니다. 코로나로 5분안에 개발하는 시범(데모)을 보여드렸죠.



지난주에 제가 몇가지 쌈박한 새로운 것들에 대해 암시를 드렸었죠. 몇분들은 막 추측을 하셨을 텐데요. 그게 제가 지난주 금요일 선보인 기능들은 아닙니다. 그런도 또 제가 강력히 부인하지도 않을 겁니다. ;-)



제가 말씀 드릴 수 있는 것은 그 쌈박한 새로운것들의 조짐을 보여드릴 수 있는 것들을 지난주에 데모로 잠깐 맛을 보여 드렸었습니다. 저희의 장기 프로젝트 중의 하나가 이 부분을 다뤘었습니다. 그 중에 어떤 core plumbing 은 정말 아주 많은 것들을 accelerate 할 겁니다.



여러분들에게 이 기술이 얼마나 파워풀한지 힝트를 드리자면 우선 GMIC 에서 선보였던 것을 먼저 말씀 드려야겠습니다. 1시간도 안되는 사이에 저는 Corona 안에서 PhoneGap, a.k.a. Apache Cordova 를 사용했습니다.



그리고 20개의 PhoneGap view 들을 만들었고 (a.k.a. CDVCordovaView) 이것을 physics 객체처럼 활용했습니다. (아래 그림을 보세요.) 정말 쌈박하지 않나요?

이 기술을 활용해서 어떤 native view 들도 Corona display object 처럼 사용하는 것이 가능해 집니다. 우리는 이 기능을 곧 모든 Enterprise customer 들에게 공개할 계획입니다. 그리고 SDK 고객분들에게는 이 기술과 다른 기능들을 사용할 수 있는 더 많은 모듈들을 만들 계획을 가지고 있습니다.


* * *






저희들은 또한 다른 추가 기능들을 제공하기 위해 열심히 일하고 있습니다.

예를 들어 내일 나올 daily build (936) 에서는 webview 가 로딩을 끝내면 이를 감지할 수 있는 기능이 추가 됩니다. 이것을 하기 위해 urlRequest’s ‘event.type’ property 에 loaded 를 사용하시면 됩니다.


local function onWebViewEvent(event)
if "loaded" == event.type then
print("Finished loading: ", event.url )
end
end

local webView = native.newWebView( 0, 0, 500, 400 )
webView:addEventListener("urlRequest", onWebViewEvent)
webView:request("http://www.coronalabs.com")


 


daily build summary page에서 보시면 이 외에 더 많은 새 기능들을 보실 수 있습니다. 저희들은 이 기능들을 앞으로 꾸준히 적용해 나갈 계획입니다.


* * *



다음엔 뭐냐구요?

글쎄요 아주 많이 있는데요. 그중에 하나를 고르라면 아마 많은 분들이 궁금해 하시는 것일 겁니다. 바로 안드로이드에서의 Notification 입니다.



이 기능은 거의 완료 됐습니다. 조만간 안드로이드에서 local notification 이 가능하도록 할 겁니다. (아마 1주일 이내에요.). 안드로이드에서의 Remote push notification은 1,2 주 후에 발표 될 겁니다.



아마 native coding 을 해 보신분들은 아시겠지만 iOS와 Android 의 notification 은 아주 많이 다릅니다.  여러분이 Corona 에서 이 notification을 다룰 때에는 두가지 모두 똑 같은 방법으로 처리하실 수 있습니다. 자세한 사항들은 이 기능들이 발표 될 때 공지 해 드리겠습니다.



반응형


반응형

인크로스사에서 11월 12일 jQuery Conference 2012 Asia 라는 행사를 진행한답니다.

공식 홈페이지도 있는데요.

http://www.jqueryasia.com/


위 링크 따라 가시면 자세한 사항을 보실 수 있을 겁니다.


참가비가 있는 행사네요. 35만원이요.


좀 부담이 되는 돈일 수 있겠네요.


회사에서 보내 주실 수 있는 분들은 좋은 기회일 겁니다.

개인적으로라도 저 금액을 지불하고 참가하고 싶으신 분들도 계실 수 있겠죠.


인크로스 사에서 홍보 부탁 메일이 와서 아래 그 내용을 포스팅할께요.

관심있는 분들의 참여 바랍니다.








반응형

리스트에 아이템 insert 하기

2012. 10. 24. 05:12 | Posted by 솔웅


반응형
Insert an item in a list



jQuery method들은 리스트에 intem 을 insert 하는 일들을 자주 합니다. 예를 들어 HTML 코드에 의해 정의된 element 들을 insert 하기 위해 append (html) method를 쓰는 경우가 있습니다. 이 메소드를 사용해서 <ul><ol> element 의 끝에 추가 하게 되는 거죠.


Here we define a <ol> list currently empty. A button Insert at the end of the list allows to insert an element <li> at the end of the <ol> list.

아래 예제에는 빈 <ol> list가 정의 돼 있습니다.  Insert at the end of the list 버튼을 누르면<ol> list 끝에 element <li>를 insert 하겠습니다.



Insert an item at the end of the list


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <ol id=list1 data-role=listview>

    </ol>

    <br />

    <a data-role=button id=add>Insert at the end of the list</a>

  </div>

</div>


</body>

</html>


<script>


$("#add").bind ("click", function (event)

{

  $("#list1").append ("<li>Inserted element</li>");

});


</script>



이걸 실행하고 몇번 insert 하면 아래 모양처럼 될 겁니다.




<li> elements가 insert 됐죠. 그런데 이게 jQuery Mobile 스러운 리스트로 표시되지 않네요. 왜냐하면 jQuery Mobile 은 insert 할 때마다 refresh 를 하지 않기 때문이죠. <ul> or <ol> element 상에서 listview ("refresh") method 를 call 해야 됩니다.


아래 구문을 리스트 아이템 insert 한 후에 넣어 보세요. <li> element 가 insert 될 때 자바스크립트가 실행 될 겁니다.


Refresh the list after each element insertion


$("#add").bind ("click", function (event)

{

  $("#list1").append ("<li>Inserted element</li>");

  $("#list1").listview ("refresh");

});






tistory420_01.html



반응형

Ajax 로 리스트 Retrieve 하기

2012. 10. 23. 21:06 | Posted by 솔웅


반응형
Retrieve a list by Ajax


Ajax에 의해 처리된 리스트를 만들겁니다. 이 리스트는 window content에 마지막 element 로서 추가 될 겁니다.


Retrieve a list by Ajax and insert into the window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <meta name="apple-mobile-web-app-capable" content="yes" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content </p>

  </div>

</div>


</body>

</html>


<script>


$.ajax (

  url : "action.php", 

  complete : function (xhr, result)

  {

    if (result != "success") return;

    var response = xhr.responseText;

    $("#home div:jqmData(role=content)").append (response);

    $("#list").listview ();

  }

}); 


</script>



action.php file 에는 window 에 넣을 list를 return 하는 server program 이 있습니다.


action.php file



<?
$html = "";
$html .= "<ol id=list data-inset=true>";
$html .=   "<li data-role=list-divider>List retrieved by Ajax</li>";
$html .=   "<li data-icon=delete>";
$html .=      "<a href=#>Element 1</a>";
$html .=   "</li>";
$html .=   "<li data-icon=delete>";
$html .=      "<a href=#>Element 2</a>";
$html .=   "</li>";
$html .=   "<li data-icon=delete>";
$html .=      "<a href=#>Element 3</a>";
$html .=   "</li>";
$html .= "</ol>";
  
echo utf8_encode ($html);
?>



자바스크립트 코드 안에 있는 $("#list").listview () statement를 보세요. 여기서 서버로부터 HTML 코드를 받아 이것을 jQuery Mobile 의 list 로 display 하는 겁니다. 이게 없으면 이 리스트는 jQuery Mobile 의 list를 보여주지 않고 그냥 단순히 HTML list 를 보여주게 됩니다.


이 예제의 결과는 아래 화면과 같을 겁니다.




action419.php


tistory419_01.html



Window에 list 를 생성하기 위해 create event 를 사용하실 수도 있습니다.


Create the list using listview ()


$("#list").listview ();


위 코드 부분 아래에 아래 코드를 추가하세요.


Create the list using the create event


$("#home").trigger ("create");


만약 create event를 사용하신다면 이 리스트는 서버로부터 반드시 data-role="listview" attribute 를 retrieve 할 겁니다. 그렇지 않으면 jQuery Mobile은 이 HTML element를 jQuery Mobile 리스트로 전환해야 된다는 것을 알지 못합니다.  listview () method 를 사용하시면 이 attribute는 필요가 없게 되는 거죠. 이 메소드가 call 되면 jQuery Mobile list로 transform 해야 된 다는 것을 알려 주는 겁니다. (여기서는 #list1 element 임)




반응형


반응형





Turning a HTML element into a jQuery Mobile list



이번에 할 작업은 일반적인 HTML에서의 리스트 표시 방법인 <ul> or <ol>를 jQuery Mobile 식으로 display 하도록 바꾸는 작업입니다. <ul> or <ol> element 가 data-role="listview" attribute 를 사용해서 리스트를 표시할 수 있는 것은 이미 알고 계시죠? 우리는 이 attribute를 어떻게 <ul> or <ol> element 에 이 attribute를 적용하는지에 대해 알아 볼겁니다.


아래 예제를 보실텐데요 일단 고전적인 attribute들인 data-role, data-icon, etc 을 모두 제거한 코드를 먼저 보시겠습니다.


A HTML list with no jQuery Mobile conventions


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <meta name="apple-mobile-web-app-capable" content="yes" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <ol id=list1>

      <li>Element 1.1</li>

      <li>Element 1.2</li>

      <li>Element 1.3</li>

    </ol>

  </div>

</div>


</body>

</html>


<script>


</script>



이 리스트는 전형적인 jQuery Mobile window를 포함하고 있습니다. 그런데 <ol> element 가 data-role="listview" attribute를 가지고 있지 않습니다.  이 리스트는 아주 기본적인 형식만 갖췄습니다.




tistory418_01.html


이제 자바스크립트로 jQuery Mobile convention을 따라서 display 하도록 무너가 작업을 해야될 것 같군요. 이를 위해서 listview jQuery Mobile component 에 있는 listview () method를 사용해서 HTML 리스트를 jQuery Mobile 리스트로 표시할 겁니다.

Add this statement in our JavaScript code:


Call to the listview () method on the list


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <meta name="apple-mobile-web-app-capable" content="yes" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <ol id=list1>

      <li>Element 1.1</li>

      <li>Element 1.2</li>

      <li>Element 1.3</li>

    </ol>

  </div>

</div>


</body>

</html>


<script>


$("#list1").listview ();


</script>





tistory418_02.html



그런데 기대했던 모습은 아니네요. 우리는 이 window 가 생성될 때 그냥 거기서 jQuery Mobile component (list) 를 display 하라고 시켰습니다. 이러지 말고 이 window 가 그 transformation을 수행하기 위한 과정에서 create 될 때 까지 좀 더 기다려 줘야 할 것 같습니다.


그 윈도우의 pagecreate event 에서 listview () instruction을 집어 넣어 보겠습니다. 그러면 이 윈도우가 create 되는 것을 끝마칠 때까지 기다릴 겁니다.


Call to the listview () method in the treatment of the pagecreate event


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <meta name="apple-mobile-web-app-capable" content="yes" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <ol id=list1>

      <li>Element 1.1</li>

      <li>Element 1.2</li>

      <li>Element 1.3</li>

    </ol>

  </div>

</div>


</body>

</html>


<script>


$("#home").bind ("pagecreate", function ()

{

  $("#list1").listview ();

});


</script>





tistory418_03.html



이제 기대했던 대로 나왔네요.....





반응형


반응형

jQuery Mobile에 의해서 display 되는 리스트 만들기는 jQuery 에 그 기본을 둡니다. jQuery Mobile 은 그것을 사용하기 위해 listview () method를 implement합니다. 이 리스트들은 listview standard component와 연계가 있습니다.



Dynamically create a list



리스트는 HTML 코드 안에서 생성할 수 있습니다. jQuery Mobile 은 이 리스트 아이템들을 좀 더 예쁘게 보이도록 새로운 CSS 클래스를 적용해서 HTML을 convert 할 수 있습니다.


그리고 새로운 리스트를 jQuery 의 메소드를 사용해서  dynamic 하게 생성하는 것도 가능합니다.


List without images


아래 예제에서는 페이지에 HTML 코드로 list 를 만들고 두번쨰로는 JavaScript code로 dynamic 하게 list를 생성했습니다. 마지막으로 이 두 리스트의 view를 일관되게 표현했습니다.


Dynamic creation of a list


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <ol id=list1 data-role=listview data-inset=true>

      <li data-role=list-divider>Static list</li>

      <li data-icon=delete>

        <a href=#>Element 1.1</a>

      </li>

      <li data-icon=delete>

        <a href=#>Element 1.2</a>

      </li>

      <li data-icon=delete>

        <a href=#>Element 1.3</a>

      </li>

    </ol>

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<ol id=list2 data-role=listview data-inset=true>";

html +=   "<li data-role=list-divider>Dynamic list</li>";

html +=   "<li data-icon=delete>";

html +=      "<a href=#>Element 2.1</a>";

html +=   "</li>";

html +=   "<li data-icon=delete>";

html +=      "<a href=#>Element 2.2</a>";

html +=   "</li>";

html +=   "<li data-icon=delete>";

html +=      "<a href=#>Element 2.3</a>";

html +=   "</li>";

html += "</ol>";


$("#home div:jqmData(role=content)").append (html);


</script>



첫번째 리스트는 전통적인 방법으로 HTML을 사용해서 생성했고 (static list) 두번째는 JavaScript 로 자동으로 생성해서 append (html) instruction을 사용해서 DOM tree에 insert 했습니다(dynamic list).




tistory417_01.html


List with images


이번에는 위와 같은 예제인데요 다른 점은 리스트 아이템 안에 이미지가 들어가는 겁니다. static list 는 두개의 리스트 아이템이 있고 dynamic list에는 한개의 아이템이 있습니다.


Dynamic creation of a list with images


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <meta name="apple-mobile-web-app-capable" content="yes" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <ul id=list1 data-role=listview data-inset=true>

      <li data-role=list-divider>Static list</li>

      <li>

        <img src=images/html.jpg />

        <h1> HTML & CSS</h1>

        <p> Eric Sarrion</p>

      </li>

      <li>

        <img src="images/j2ee.jpg" />

        <h3>J2EE</h3>

        <p> Eric Sarrion</p>

      </li>

    </ul>

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<ul id=list2 data-role=listview data-inset=true>";

html +=   "<li data-role=list-divider>Dynamic list</li>";

html +=   "<li>";

html +=     "<img src=images/jquery.jpg />";

html +=     "<h3>JQuery & jQuery UI</h3>";

html +=     "<p> Eric Sarrion</p>";

html +=   "</li>";

html += "</ul>";


$("#home div:jqmData(role=content)").append (html);


</script>





tistory417_02.zip




반응형


반응형

오늘 아침 일요일인데도 아침 일찍 일어나 스마트폰으로 인터넷 부터 봤다.


평일에는 늦잠 자고 싶고 휴일엔 일찍 일어나고 (5:30) 이거 왜 이런거야???


한국 말이 편하지라 자연히 보게 되는건 한국 싸이트들이거든.

네이버나 다음.


기사가 큼지막하게 났더만.


박근혜의 정수장학회 관련 입장 표명.


지난 총선때 야당보다 더 개혁적인 것 아니냐는 인상을 줬던 박근혜.

역시 이번에도 야당이나 야당지지자들이 반박하기 힘든 개혁 드라이브를 정수장학회 건으로 시작하는 건가.


이제 빼앗긴 선수를 다시 찾아오는 건가?

바둑에서도 선수와 후수의 차이는 승패와 직결될 만큼 중요하다 하지 않은가.


더군다나 정수장학회건은 개혁의 얼굴마담으로 내놨던 이준석도 일찌감치 박근혜는 정수장학회부터 털고 가야한다고 얘기했고 조선일보를 비롯한 보수신문들 조차도 정수장학회 사회환원에 대해서 얘기하는 사안인데...


역시 이 약점을 기회로 삼아 개혁과 신선함의 이미지로 선수를 잡는건가? 우리 박근혜.


하나 기사를 읽어보니 이런 기대를 저버리고 우리 박근혜가 악수 중의 악수를 두어 버린 것 같다.





박근혜의 생각

" 내 생각엔 부일장학회 건은 강압에 의해 빼앗은게 아닌것 같은데. 그런데 기사에는 강압은 있다고 법원이 판결했다고 얘기를 했긴 했네요..... 그런데 여기 보세요. 법원에서도 주인 스스로 의사결정의 여지를 완전히 박탈한 상태에서 한 것이 아닌 만큼 증여행위를 원천 무효로 할 정도는 아니다 라고 얘기 했어요."


새누리당 이정현의원도

"김지태씨가 1962년 정부 강압으로 문화방송, 부산일보의 주식을 증여한 사실이 인정되지만 당시 김씨가 의사결정여지를 완전히 박탈당한 상태에서 주식을 증여했다고 보기 힘들다는 것이 법원의 판단"이라며 "판결 중 뒷부분을 강조하다 보니 그런 말을 한 것 같다"

라고 부연설명을 했군.


한겨례신문의 기사중에 한 트위터를 인용한 부분이 눈에 들어온다.


트위터 아이디 hop*****는 “박근혜의 뇌 구조에는 ‘과정이 어떻든 이기기만하면 된다;는 생각으로 꽉 들어차 있다. 5.16쿠테타가 그렇고 정수장학회 강탈이 그렇다”고 꼬집었다.


======== o ========== o ============ o ============= o ============= o ===========


장동건이 주연한 2009 로스트 메모리즈라는 영화가 있다.


2009년까지 아직도 일본이 한국을 지배하는 상황...  아니 아예 한국(조선)이 없어진 상황...

영화에서는 장동건이 과거로 가서 안중근을 돕고 다시 역사는 제대로 돌아가게 된다는 줄거리인데....


장동건이 그 일에 실패해서 아직도 일본이 조선을 지배하는 상황을 상상해 봤다.


2012년 다카키 마사오의 딸 이 일본제국의 내무성 장관의 유력후보자이다.

조선인 출신으로 더군다나 여성으로서 내무성 장관에 오른다는 건 최초다.


조선인 출신으로 한일 병합에 대한 의견을 내놓을 것을 꾸준히 요구 받고 있었다.


드디어 다카키 마사오의 딸은 조선인 출신 내무성 장관 유력후보 입장에서 한일 병합의 의견을 피력한다.


"내 생각엔 한일 병합은 일본제국이 강압에 의해 조선을 빼앗은게 아니라는 입장입니다. 그러나 국제법 판결이 강압은 있었다고 판결을 했네요. 그런데 보세요. 국제법 판결에도 조선 지도자들이 스스로 의사결정의 여지를 완전히 박탈한 상태에서 한것이 아닌 만큼 한일 병합을 원천 무효로 할 정도는 아니라고 얘기했잖아요."


즉 한일 병합은 강압이 있었다는 말이 있긴 한데 나는 그렇게 생각 안하고 백번 양보하더라도 원천무효는 아니니까 조선인들은 독립요구를 포기하고 나는 내무성 장관이 돼야하고 우리 조선은 일본 제국의 일원으로서 만세 만세 만만세 해야 된다.


이게 다카키 마사오 딸의 의견이었다.


그 후로 다카키 마사오와 그 딸의 바람대로 일본제국이 만세만세 만만세 했는지 아니면 조선인들이 의분 강개해서 다시 독립을 되찾고 이런 친일파들을 척결해서 역사를 바로 세웠는지는...


아직 알지 못한다....


2009 로스트 메모리즈의 속편 2012 로스트 메모리즈를 만들어야 하지 않을까?

원작에서는 장동건이 안중근을 도와서 이토오 히로부미를 사살하도록 도왔는데...

이 후속작에서는 과거로 돌아간다면 어디로 돌아가야 하고 어떤 일을 해야 될까?


공상은 그만 두고 난 그냥 현실에서 내가 할 수 있는 일을 찾을래..


일단 재외국민투표 신청은 했고.

2012년 12월 5일 (수) ~ 10일 (월) 까지 재외 투표 기간에 차타고 한시간 넘게 보스톤으로 가서 투표하고 올거야.


그리고 그 동안 몸은 먼 곳에 있지만 여러 사람과 정치적인 의견을 많이 주고 받아 올바른 선택을 해서 먼 미래에 타임머신을 타고 다시 2012년으로 와야 되는 상황은 만들지 말아야 되지 않을까?  이번 선거에서 말야..........




일제 강점기 완전 군장을 한 일본 제국주의국의 장교 다카키 마사오(박정희)와 조선의 독립을 위해 싸우는 독립군 장준하.

이후 조선은 독립을 찾았지만 저 일본군 장교가 대통령이 되고 저 독립군 장준하는 독립된 조선에서 박정희 정권에 의해 정치적 타살을 당했다.



반응형

window를 생성하는 예제들...

2012. 10. 21. 02:57 | Posted by 솔웅


반응형

Examples of manipulation of windows


Switch between multiple windows thanks to swipe events


우리는 windows 들간에 이동을 하기 위해 swipe type events 를 사용합니다. Swipeleft event가 발생하면 next window 로 가도록 할 것이고 swiperight event 가 발생하면 이전 페이지로 돌아갈 겁니다. (Back button이랑 같죠)


Use the swipe events to switch between three windows


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content 1 </p>  

  </div>

</div>


<div data-role=page id=win2>

  <div data-role=header>

    <h1>Window 2</h1>

  </div>


  <div data-role=content>

    <p> Window content 2 </p>  

  </div>

</div>


<div data-role=page id=win3>

  <div data-role=header>

    <h1>Window 3</h1>

  </div>


  <div data-role=content>

    <p> Window content 3 </p>  

  </div>

</div>


</body>

</html>


<script>


$("div:jqmData(role=page)").bind ("swipeleft", function (event)

{

  var id = this.id;

  var next;   // id of the next visible window

  if (id == "home") next = "win2";

  else if (id == "win2") next = "win3";

  if (next) $.mobile.changePage ($("#" + next), 

  

    transition : "slide" 

  });

});


$("div:jqmData(role=page)").bind ("swiperight", function (event)

{

  var id = this.id;

  var next;   // id of the next visible window

  if (id == "win2") next = "home";

  else if (id == "win3") next = "win2";

  if (next) $.mobile.changePage ($("#" + next), 

  

    transition : "slide",

    reverse : true

  });

});


</script>




tistory415_01.html


swiperight event가 진행되는 중에 $.mobile.changePage ()안에 reverse option을  true로 세팅합니다.  그렇게 하면 이 swiperight event 가 발생하면 이전페이지로 갈 수 있게 되죠. 만약 우리가 slide transition 만 사용한다면 우리가 next window 로 갈 때와 같이 scrolling effect 를 사용하겠죠. 이전 페이지로 돌아가는 것처럼 화면이동이 이루어지게 하려면 reverse option을 true로 세팅해야 합니다.


Create a window and display it dynamically


이제 이전 샘플 코드를 좀 더 발전시켜 볼까요. 이전 window에서 click 이 일어났을 때 dynamic 하게 window를 생성하고 display 하는게 이전 예제였다면 이제는 이전 window 에서 click 없이 dynamic 하게 window를 생성하고 display 하도록 하겠습니다.



Directly display a window created dynamically


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content 1 </p>  

    <a href=#win2 id=link1 data-role=button> Goto Window 2 </a>

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<div data-role=page id=win2 data-add-back-btn=true>";

html +=   "<div data-role=header>";

html +=     "<h1>Window 2</h1>";

html +=   "</div>"

html +=   "<div data-role=content>";

html +=     "<p> Window content 2 </p>";

html +=   "</div>";

html += "</div>";


$("body").append (html);


$("#home").bind ("pagecreate", function (event)

{

  $.mobile.changePage ($("#win2"));

});


</script>



두번째 window의 HTML code 는 DOM tree 안에서 application이 시작할 때 insert 됩니다. 그리고나서 첫번째 window의 생성 마지막 단계에서(pagecreate event) 두번째 window 가 display 됩니다. 첫번째 window 의 create 를 기다리지 않는다면 두 윈도우간의 transition 은 발생하지 않을 겁니다.




tistory415_02.html




반응형

content 부분 customize 하기

2012. 10. 21. 02:40 | Posted by 솔웅


반응형

Customize windows


window 는 대개 3개의 zone 으로 구성됩니다. : header, content and footer. 우리는 이 윈도우의 content part 를 어떻게 customize 하는지를 공부합니다. 다른 부분에 대한 customization 은 toolbars chapter 에서 다룰겁니다.

 

Window 의 content를 어떻게 customize 하는지를 보기 위해 아래 HTML code 를 살펴 보겠습니다.


A minimal window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Paragraph 1 </p>  

    <p> Paragraph 2 </p>  

    <p> Paragraph 3 </p>  

    <p> Paragraph 4 </p>  

    <p> Paragraph 5 </p>  

    <p> Paragraph 6 </p>  

    <p> Paragraph 7 </p>  

    <p> Paragraph 8 </p>  

    <p> Paragraph 9 </p>  

  </div>

</div>


</body>

</html>




tistory414_01.html


한개의
header toolbar와 9개의  paragraph 가 있는 content 를 add 했습니다. 이 window 는 그냥 평범한 모습으로 display 될 겁니다.




window를 어떻게 customize 하는지 이해하기 위해 우리가 작성한 이 코드가 jQuery Mobile 에 의해 어떤 HTML 코드로 generate 되는지를 살펴보세요. 아래는 Firefox 브라우저의 Firebug 로 본 모습입니다.



window 의 content 부분에 해당하는 <div> element 를 보시면 ui-content CSS class 가 있는 걸 보실 수 있을 겁니다. (원본 소스에는 없었던 거죠) 만약 이 스타일을 우리의 HTML page에 정의해 넣는 다면 이 window contents 는 약간 다르게 보일겁니다.


Changing the style associated with the contents of the window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

  

  <style type=text/css>

    .ui-content {

      font-style : italic;

      font-size : 20px;

      background-color : grey;

      color : red;

    }

  </style>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Paragraph 1 </p>  

    <p> Paragraph 2 </p>  

    <p> Paragraph 3 </p>  

    <p> Paragraph 4 </p>  

    <p> Paragraph 5 </p>  

    <p> Paragraph 6 </p>  

    <p> Paragraph 7 </p>  

    <p> Paragraph 8 </p>  

    <p> Paragraph 9 </p>  

  </div>

</div>


</body>

</html>





tistory414_02.html


이렇게 하면 content 부분을 여러분이 원하시는 대로 customize 하실 수 있습니다.



반응형


반응형
Manage events on windows



jQuery Mobile은 windows와 연관된 event system을 셋업합니다. 예를 들어 윈도우 생성(pagecreate) 과 연계된 이벤트를 handle 하는 것 뿐만 아니라 윈도우의 display 나 disappearance (pageshow and pagehide)와 관련된 이벤트를 처리하는 것도 가능합니다.


Creating the window


윈도우는 display 되어야 할 때 jQuery Mobile 에 의해서 생성됩니다. 윈도우를 create 하려면 initial HTML code를 스크린에 display 될 다른 HTML code로 바꾸어야 합니다. (특히 윈도우의 다른 콤포넌트마다 다른 style을 적용하는 CSS 를 추가하는 경우는 더 그렇죠.).  이 creation process는 오직 한번만 perform 됩니다. 첫번째 window 가 display 될 때죠.


Events associated with the creation of windows


Name

Signification

pagebeforecreate

Triggered in the first display of the window, before the process of creating the window.

pagecreate

Triggered at the end of the process of creating the window. The internal components of the window (radio buttons, check boxes, lists, etc..) are processed independently of the reception of the pagecreate event on the window, and thus may have been created or not (at this time there).

pageinit

Triggered after the pagecreate event when all components of the window was created.


이 이벤트의 sequence를 이해하시려면 아래 간단한 샘플을 보세요.


Events associated with the creation of windows


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content 1 </p>  

    <input type=range id=slider1 min=1 max=100 />

    

    <label for=check1>checkbox</label>

    <input type=checkbox id=check1 />    

    

    <a href=#win2 id=link1> Goto window 2 </a>

  </div>

</div>


<div data-role=page id=win2 data-add-back-btn=true>

  <div data-role=header>

    <h1>Window 2</h1>

  </div>


  <div data-role=content>

    <p> Window content 2 </p>  

  </div>

</div>


</body>

</html>


<script>


$("#check1").live ("checkboxradiocreate", function (event)

{

  alert ("checkbox created");

});


$("#slider1").live ("slidercreate", function (event)

{

  alert ("slider created");

});


$("div:jqmData(role=page)").bind ("pagebeforecreate", function (event)

{

  alert ("pagebeforecreate id=" + this.id);

});


$("div:jqmData(role=page)").bind ("pagecreate", function (event)

{

  alert ("pagecreate id=" + this.id);

});


$("div:jqmData(role=page)").bind ("pageinit", function (event)

{

  alert ("pageinit id=" + this.id);

});


</script>




tistory413_01.html


여기에 두개의 window를 정의했습니다. 두번째는 첫번째 화면에서 링크를 클릭하면 display 됩니다. 이 두 윈도우의 creation 시 event를 가로챕니다. 각 이벤트는 id 이름을 화면이 표시되기 전에 alert로 보여줄 겁니다.


만약에 두번째 window 가 external file 이라면 이것과 관련된 pagebeforecreate, pagecreate and pageinit events 들은 window가 display 될 때마다 trigger 됩니다. (첫번째에만 trigger 되는 것이 아니라 매번 display 될 때마다요. 다만 그 윈도우가 data-dom-cache="true" attribute를 사용하고 있다면 이미 DOM 에 있으니까 저 이벤트들이 trigger 되지는 않겠죠.)


추가로 slidercreate and checkboxradiocreate events는 pageinit event 바로 직전에 trigger 됩니다. 그러니까 window의 모든 컴포넌트들이 생성된 다음이 되겠죠.


Loading of the window by Ajax


그 window가 아직 DOM 에 있지 않으면 jQuery Mobile은 HTML 안의 Ajax를 사용해서 그 화면을 로딩합니다. 그려면 윈도우가 로드되기 전에 pagebeforeload event 가 발생하게 되죠. 그리고 로딩이 성공적으로 이뤄지면 pageload event 가 발생할 겁니다. 실패하면 pageloadfailed event 가 발생하구요.


이 이벤트들은 event and data parameters 들을 전달 받습니다. data parameter 는 Ajax 에 의해 로드 된 파일의 full URL 이 있는  url property를 가지고 있습니다.


Events associated with loading windows by Ajax


Name

Signification

pagebeforeload

Triggered before loading the window by Ajax. The window is located in an external file, which may or may not be loaded successfully.

pageload

Triggered when loading the file containing the window was successfully completed. The window was created in the DOM tree (the pagecreate event is fired before pageload).

pageloadfailed

Triggered when loading the file containing the window failed. No window was inserted in the DOM tree.



이 이벤트들의 sequence를 이해하기 위해 여러 HTML 파일에 window 들을 생성하겠습니다.


  • Window 1 is the first window displayed, located in the index.html file.

  • Window 2 is located in the original HTML page (index.html) following Window 1.

  • Window 3 is located in the existing file index3.html.

  • Window 4 is located in the existing file index4.html. It has the data-dom-cache="true" attribute indicating to keep it in the DOM (instead of the Window 3).

  • Window 5 is located in the file index5.html nonexistent. A loading error occurs when it is displayed.


Window 1 은 다른 4개의 window들에 access 할 수 있는 link들을 가지고 있습니다. 그 중 한가지라도 event 가 발생하면 그리고
pagebeforecreate, pagecreate and pageinit events들이 trigger 되면 메세지를 display 할 겁니다.



Events for creating windows by Ajax (index.html file)


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content 1 </p>  

    <a href=#win2> Goto Window 2 (into the DOM) </a>

    <br /><br />


    <a href=index3.html> 

         Goto Window 3 in index3.html (data-dom-cache=false) </a>

    <br /><br />


    <a href=index4.html> 

         Goto Window 4 in index4.html (data-dom-cache=true) </a>

    <br /><br />


    <a href=index5.html> Goto Window 5 (index5.html nonexistent) </a>

    <br /><br />

  </div>

</div>


<div data-role=page id=win2 data-add-back-btn=true>

  <div data-role=header>

    <h1>Window 2</h1>

  </div>


  <div data-role=content>

    <p> Window content 2 </p>

  </div>

</div>


</body>

</html>


<script>


$(document).bind ("pagebeforeload", function (event, data)

{

  alert ("pagebeforeload data.url = " + data.url);

});


$(document).bind ("pageload", function (event, data)

{

  alert ("pageload data.url = " + data.url);

});


$(document).bind ("pageloadfailed", function (event, data)

{

  alert ("pageloadfailed data.url = " + data.url);

});


$("div:jqmData(role=page)").live ("pagebeforecreate", function (event)

{

  alert ("pagebeforecreate id=" + this.id);

});


$("div:jqmData(role=page)").live ("pagecreate", function (event)

{

  alert ("pagecreate id=" + this.id);

});


$("div:jqmData(role=page)").live ("pageinit", function (event)

{

  alert ("pageinit id=" + this.id);

});


</script>



Index3.html file containing the window 3


<!DOCTYPE html>

<html> 

<head> 

  <meta http-equiv=Content-Type content=text/html;charset=iso-8859-1 />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=win3 data-add-back-btn=true>

  <div data-role=header>

    <h1>Window 3</h1>

  </div>


  <div data-role=content>

    <p> Window content 3 </p>

  </div>

</div>


</body>

</html>





Index4.html file containing the window 4

<!DOCTYPE html>

<html> 

<head> 

  <meta http-equiv=Content-Type content=text/html;charset=iso-8859-1 />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=win4 data-add-back-btn=true data-dom-cache=true>

  <div data-role=header>

    <h1>Window 4</h1>

  </div>


  <div data-role=content>

    <p> Window content 4 </p>

  </div>

</div>


</body>

</html>


tistory413_02d.zip


Index5.html 파일은 없습니다. 그 링크를 클릭하면 로딩시 Ajax 에러를 의도적으로 발생시키기 위해서 입니다.


home window 와 다른 window들을 navigating 하게 되면 이벤트들이 발생합니다. 만약 그 window가 이미 메모리(DOM) 에 로드돼 있다면 이 이벤트들은(pagebeforeload, pageload and pageloadfailed) 더 이상 trigger 되지 않습니다.



Remove the window in the DOM


메모리에서 window들에 의해 점유되는 공간을 줄이기 위해 jQuery Mobile은  더이상 그 페이지가 visible 되지 않게 되면 Ajax 에 의해 로드 된 그 window들을 자동적으로 remove 하게 됩니다. ( attribute-dom-cache=true 가 설정돼 있는 윈도우는 계속 남아 있게 됩니다.)


메모리에서 그 window를 remove 하기 전에 pageremove event가 trigger 되고 그리고 나서 DOM 에서 remove 될 겁니다 . 이 pageremove event 에 의해 해당 윈도우가 remove 되지 않도록 하려면 event.preventDefault ()를 call 하시면 됩니다. pageremove event 가 진행될 때 이 함수가 call 되지 않으면 그 window는 DOM tree에서 remove 되게 됩니다.  만약 그 페이지가 나중에 반드시 다시 display 되어야 한다면 그 때 jQuery Mobile 에 의해 다른 Ajax call 이 만들어 질 겁니다.


Prohibit the removal of the windows in memory loaded by Ajax


$("div:jqmData(role=page)").live ("pageremove", function (event)

{

  alert ("pageremove id=" + this.id);

  event.preventDefault ();

});



Window display


한번 그 window가 create 되면 이제 display 될 준비가 끝난겁니다.  한번만 create 됐지만 그 window는 여러번 display 되고 hidden 되고 할 수 있습니다. (그 window 가 external file 이 아니고 data-dom-cache attribute 가 "false" 일 경우는 제외하구요.)


Events associated with the display of windows


Nom

Signification

pagebeforeshow

Triggered when the window will be displayed (it is not yet visible).

pageshow

Triggered when the window is displayed (visible).

pagebeforehide

Triggered before the window is hidden (it is still visible).

pagehide

Triggered after the window is hidden (it is no longer visible).


이 이벤트들은 그 window의 pagecreate event 이 후에 trigger 됩니다. 이것들은 jQuery class object 로서 bind () method에 의해 사용되어질 수 있습니다. 이 callback function은 uihe prevPage or nextPage property 랑 있는 객체 파라미터에서 callback (event, ui) 이벤트가 진행될 때 call 합니다.


  • If the event is of type show (pageshow or pagebeforeshow) ui.prevPage corresponds to the jQuery class object defining the window that one leaves or has left (if any), to display this one it. ui.nextPage property is not defined in this case.

  • If the event is of type hide (pagehide or pagebeforehide) ui.nextPage corresponds to the jQuery class object defining the window we are going to show or that have been displayed by leaving this one. ui.prevPage property is not defined in this case.


이제 이전에 다뤘던 예제로 다시 돌아가 봅시다. 우리가 이벤트들을 intercept 했던 그 예제로요.


Display type events on windows


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content 1 </p>  

    <a href=#win2 id=link1> Goto window 2 </a>

  </div>

</div>


<div data-role=page id=win2 data-add-back-btn=true>

  <div data-role=header>

    <h1>Window 2</h1>

  </div>


  <div data-role=content>

    <p> Window content 2 </p>  

  </div>

</div>


</body>

</html>


<script>


$("div:jqmData(role=page)").bind ("pagebeforeshow", function (event, ui)

{

  var txt = "pagebeforeshow id=" + this.id + "\n";

  if (ui.prevPage && ui.prevPage[0])

    txt += "ui.prevPage=" + ui.prevPage[0].id + "\n";

  if (ui.nextPage && ui.nextPage[0]) 

    txt += "ui.nextPage=" + ui.nextPage[0].id + "\n";

  alert (txt);

  

});


$("div:jqmData(role=page)").bind ("pageshow", function (event, ui)

{

  var txt = "pageshow id=" + this.id + "\n";

  if (ui.prevPage && ui.prevPage[0])

    txt += "ui.prevPage=" + ui.prevPage[0].id + "\n";

  if (ui.nextPage && ui.nextPage[0]) 

    txt += "ui.nextPage=" + ui.nextPage[0].id + "\n";

  alert (txt);

});


$("div:jqmData(role=page)").bind ("pagebeforehide", function (event, ui)

{

  var txt = "pagebeforehide id=" + this.id + "\n";

  if (ui.prevPage && ui.prevPage[0])

    txt += "ui.prevPage=" + ui.prevPage[0].id + "\n";

  if (ui.nextPage && ui.nextPage[0]) 

    txt += "ui.nextPage=" + ui.nextPage[0].id + "\n";

  alert (txt);

});


$("div:jqmData(role=page)").bind ("pagehide", function (event, ui)

{

  var txt = "pagehide id=" + this.id + "\n";

  if (ui.prevPage && ui.prevPage[0])

    txt += "ui.prevPage=" + ui.prevPage[0].id + "\n";

  if (ui.nextPage && ui.nextPage[0]) 

    txt += "ui.nextPage=" + ui.nextPage[0].id + "\n";

  alert (txt);

});


</script>




tistory413_03.html


Events related to the $.mobile.changePage () method


$.mobile.changePage () method 가 개발자가 직접 이용하던지 내부적으로 jQuery Mobile 에 의해 이용되던지 간에 window 가 change 되는 과정을 인식하거나 어떤 간섭을 하기 위해 jQuery Mobile 은 여러 특정 이벤트들을 발생시킵니다. 이 이벤트들은 document object에서 trigger 됩니다.


pagebeforechange event는 다른것들에 앞서서 처음 trigger 되는 것인데요. 이 이벤트의 management method는 파라미터로서 data and event arguments를 갖습니다. data.toPage property는 string (display 될 윈도우의 파일 이름. "index2.html") 이거나 jQuery class object (symbolizing 된 윈도우$("#win2"))  입니다.


이 이벤트는 두번 call 될 수 있는데요. 첫번째는 Ajax로 그 파일을 로딩하기 전이구요 (data.toPage is a string) 두번째는 메모리에 로드될 때입니다 (data.toPage is a jQuery object class). 어떤 상황에서든 최소한 두번째 call 은 이루어 집니다. (왜냐하면 윈도우는 display 되기 전에 반드시 메모리상에 있어야 하기 때문이죠.)

추가로 event.preventDefault () instruction을 사용해서 윈도우가 display 되는 과정에 interrupt 할 수 있습니다. 정확한 시기는 pagebeforechange event가 진행될 때 입니다. 이 구문은 pagebeforechange event가 만들어지는 두 상황중 한 상황에서 excute 될 수 있습니다. 그러면 display process 는 stop 되게 되죠.


Stop the window display


$(document).bind ("pagebeforechange", function (event, data)

{

   event.preventDefault ();

});



display process 가 pagebeforechange event안에서  event.preventDefault () instruction에 의해 stop 되지 않았을 경우에는 document object에 pagechange or pagechangefailed events 가 trigger 됩니다.


  • The pagechange event indicates that the window could be displayed. This is the last event issued by jQuery Mobile, indicating that a window is created and displayed. The processing function of the event uses event and data parameters, latter having the data.toPage property representing the jQuery class object associated with the active window (that is displayed).

  • The pagechangefailed event indicates that the window could not be displayed. This is due to the failure of the loading window Ajax call (pageloadfailed event was previously triggered).


Moves in the window


추가로 vclick, vmouseover, vmousedown, vmousemove, vmouseup, vmouseout and vmousecancel 같은 전통적인 이벤트들에 대해서 jQuery Mobile은 모바일 context 에 맞도록 새롭게 이벤트를 생성시킵니다.



Events associated with the moves in windows


Name

Signification

tap

Triggered when the mouse (left button), or finger, click the screen. Similar to traditional one-click.

taphold

Triggered when the mouse (left button) or the finger is pressed at least one second.

swipe

Triggered when the mouse (left button) or the finger moves horizontally across the screen.

swipeleft

Triggered when the mouse (left button) or the finger moves horizontally across the screen from right to left.

swiperight

Triggered when the mouse (left button) or the finger moves horizontally across the screen from left to right.


예를 들어서 swipe type events 들을 사용할 수 있는데요. 스크린에서 이미지를 오른쪽이나 왼쪽으로 sweeping 할 때 사용될 수 있습니다. jQuery Mobile 은 터치 스크린과 마우스를 사용하는 일반 스크린 모두에서 작동되도록 합니다.


아래 예제는 window 에서 swipe type events (and taphold)를 구현합니다.


Display swipe and taphold type events in a window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Events : </p>  

    <div id=evt></div>

  </div>

</div>


</body>

</html>


<script>


$("#home").bind ("taphold", function (event)

{

  var txt= "taphold, ";

  $("#evt").append (txt);

});


$("#home").bind ("swipe", function (event)

{

  var txt= "swipe, ";

  $("#evt").append (txt);

});


$("#home").bind ("swipeleft", function (event)

{

  var txt= "swipeleft, ";

  $("#evt").append (txt);

});


$("#home").bind ("swiperight", function (event)

{

  var txt= "swiperight, ";

  $("#evt").append (txt);

});


</script>



화면을 몇번 sweeping 하고 나면 아래같은 화면이 될 겁니다.




Swipe type events 는 horizontal direction 움직임을 감지합니다. jQuery Mobile 은 vertical direction 움직임을 감지하기 위해 scroll type events 를 생성합니다.


Events associated with vertical movements in the window


Name

Signification

scrollstart

Triggered when the mouse (left button) or the finger moves vertically on the screen up or down.

scrollstop

Triggered when the mouse (left button) or the finger is removed from the screen (end of vertical displacement).


View events of scroll type in a window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Events : </p>  

    <div id=evt></div>

  </div>

</div>


</body>

</html>


<script>


$("#home").bind ("scrollstart", function (event)

{

  var txt= "scrollstart, ";

  $("#evt").append (txt);

});


$("#home").bind ("scrollstop", function (event)

{

  var txt= "scrollstop, ";

  $("#evt").append (txt);

});


</script>






tistory413_05.html


Change screen orientation


jQuery Mobile 은 스크린의 orientation 변화를 감지하기 위해 orientationchange event 를 사용합니다. 이 event parameter 는 callback 함수 안에 있는데요. 화면의 orientation 에 따라 "portrait" or "landscape" 라는 orientation property 가 있습니다.


Events associated with the change in orientation of the screen


Name

Signification

orientationchange

Triggered upon a change of screen orientation. The event.orientation property indicates "portrait" or "landscape" according to screen orientation.


아래 예제는 화면의 orientation 이 바뀔 때마다 warning 을 보여 줍니다.


Display the change in orientation of a window


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content </p>  

  </div>

</div>


</body>

</html>


<script>


$("#home").bind ("orientationchange", function (event)

{

  alert (event.orientation);

});


</script>







화면을 바꾸지 않을 떄에도 현재의 orientation 을 표시할 수 있는데요. $.event.special.orientationchange.orientation () method 를 사용해서 "portrait" or "landscape"를 화면에 표시할 수 있습니다.


tistory413_06.html


Retrieve the current orientation


alert ($.event.special.orientationchange.orientation ());

                                      // "portrait" or "landscape"






반응형