Jquery nuevos eventos moviles html5

TUTORIAL JQUERY PARA MOVIL
     Nuevos eventos
    Ya hemos hablado del evento "mobileinit", que nos permite utilizar JQuery
    mobile cuando este ya está disponible para ser utilizado. Luego tenemos
    nuevos eventos, por ejemplo para poder manejar gestos, que podemos
    aplicar a todo el documento o a algún elemento en particular, por ejemplo
    podríamos tener una zona de eventos y vía JQuery le podemos enlazar un
    nuevo evento, por ejemplo el evento "tap", que en realidad se parece al
    evento "click" (es la acción de tocar con el dedo una zona de la pantalla):
    $("zona").bind("tap", function() {
    // acción de tocar con el dedo
  });
    El evento "taphold" tambien conocido como Long Press es otro evento de
    gestos que es, tocar y mantener presionado durante unos instantes, por
    ejemplo para mostrar un menú. Este evento equivale a hacer click con
    el botón derecho del ratón en un ordenador personal:
    $("zona").bind("taphold", function() {
    // acción de tocar con el dedo y mantener presionado
  });
    Luego tenemos eventos como "swipeLeft" o "swipeRight", que nos permite
    la acción con un gesto de derecha a izquierda o a la inversa de pasar de
    página, mostrar una foto etc:
    $("zona").bind("swipeLeft", function() {
    // acción de tocar y desplazar con el dedo hacia la izquierda
  });
    $("zona").bind("swipeRight", function() {
    // acción de tocar y desplazar con el dedo hacia la derecha
  });
    Ademas de eventos de gestos, tenemos otros eventos que se conocen
    como eventos de mouse virtuales. Hay equipos móviles que son táctiles
    pero no poseen eventos de TOUCH, por lo que tendríamos un problema
    de compatibilidad, pero por suerte JQuery mobile nos ofrece nuevos
    eventos, que se pueden enlazar con métodos como ".bind" o ".live" .
    Por ejemplo "vclick" lo que hace es emular un click o un touch, y se
    ejecuta dependiendo de la compatibilidad del equipo, si el equipo
    soporta touch va a usar eventos de touch para que sea más rápido, 
    si solamente soporta eventos de click lo va a hacer con click.
    Y así como tenemos "vclick" también tenemos:
     "vmousecancel", "vmousedown", "vmousemove"
     "vmouseout", "vmouseover", "vmouseup" :
    $("zona").bind("vclick", function() {
    // emula eventos touch o click, depende compatibilidad
  });
    También existen eventos de orientación. Con estos eventos podemos
    detectar por ejemplo, cuando el usuario cambia la orientación del
    equipo, cuando pasa de estar de posición horizontal a vertical o a la
    inversa:
    $(document).bind("orientationchange", function() {
    // evento de orientación, detecta la posición del equipo
  });
    O eventos de scroll, aunque tienen el problema de que en los móviles
    normalmente hay varias cosas que realizar con scroll. Lo primero
    que sucede con el scroll es que este tiene arrastre con el dedo para
    el desplazamiento, y cuando dejamos de hacer scroll y soltamos hay
    un tiempo más de desplazamiento, incluso a veces puede haber
    un rebote. Por tanto si capturamos en el scroll, se ejecutará cuando
    finalice toda la acción y a lo mejor nosotros queremos que se ejecute
    cuando apenas se ha dejado de hacer scroll, aunque todavía tenga
    desplazamiento. JQuery mobile ofrece eventos como "scrollstart",
    que es cuando comienza el scroll, o "scrollstop" que es cuando
    realmente termina la animación del scroll:
    $(document).bind("scrollstart", function() {
    // evento de scroll al inicio del mismo
  });
    $(document).bind("scrollstop", function() {
    // evento de scroll al finalizar él mismo totalmente 
  });
    Y por supuesto tenemos eventos de página. Recordemos que en
    JQuery mobile tenemos un elemento que representa a la página:
    <div data-role="page" id="pagina1">
    // contenido de la página
  </div>
    si este elemento tiene un identificador podemos capturar eventos
    de página, que los hay de varios tipos. El más importante es
    cuando la página está completamente cargada, es decir, está
    lista en pantalla para poder hacer algo: "pageinit", y este debería
    ser nuestro lugar predilecto para escribir código JavaScript que
    va a manipular elementos de esa página: 
    $(document).bind("pageinit", function() {
    // evento para manipular elementos de la página cuando está cargada 
  });
    Luego tenemos eventos que tienen que ver con la carga de la página
    cuando esta se carga vía Ajax, es decir, eventos de página externa.
    Tenemos el evento "pageload" que es cuando la página ya se cargó,
    alguno más avanzado como "pagebeforeload" que es antes de cargarse,
    o "pageloadfailed" que es cuando falla la carga de página y se puede
    aplicar a una página en particular o a todas:
    $("pagina1").bind("pageinit", function() {
    // evento a ejecutar cuando está cargada la página
  });
    $(document).bind("pageloadfailed", function() {
    alert("Ha fallado la carga de la página"); 
  });
    También tenemos eventos de cambio, que tienen que ver con una página
    en particular normalmente, por ejemplo "pagebeforechange" , que se
    ejecuta antes de que la página haga algún cambio, es decir, pasar de
    una página a otra a través de una transición, y tenemos "pagechange"
    que se ejecuta después del cambio:
    $("pagina1").bind("pagebeforechange", function() {
    // evento a ejecutar antes del cambio de la página
  });
    $("pagina1").bind("pagechange", function() {
    // evento a ejecutar después del cambio de la página
  });
    Y Hay otros que tienen que ver con la transición, con el efecto, con la
    animación, y son eventos que nos permiten hacer algo antes o después
    de que la animación se ejecute:
    $("pagina1").bind("pagebeforeshow", function() {
    // evento a ejecutar antes de que se muestre "pagina1"
  });
    $("pagina1").bind("pageshow", function() {
    // evento a ejecutar cuando "pagina1" ya se ha mostrado
  });
    $("pagina1").bind("pagehide", function() {
    // evento a ejecutar cuando desaparezca "pagina1"
  });
    $("pagina1").bind("pagebeforehide", function() {
    // evento a ejecutar antes de que desaparezca "pagina1"
  });
    $("pagina1").bind("pageremove", function() {
    // evento a ejecutar antes de que se salga "pagina1" del DOM
  });
    Por último vamos a hablar de eventos de layout, por ejemplo el evento
    "updatelayout". Hay algunos controles, por ejemplo de elementos
    colapsables que lo que hacen es modificar el tamaño de la página.
    Podemos capturar este evento para darnos cuenta que en realidad se
    ha actualizado el diseño de la página o si queremos hacer algo al
    respecto:
    $(document).bind("updatelayout", function() {
    // evento a ejecutar al modificarse el tamaño de una página
  });
    O "animationComplete" que se ejecuta cuando una animación de CSS
    ha finalizado:
    $(document).bind("animationComplete", function() {
    // evento a ejecutar cuando terminen las animaciones CSS

  });


RESUMEN

  <head>
      <script src="jquery_mobile/jquery.js"></script>
      <script src="micodigo.js"></script>
      <script src="jquery.mobile-1.0.min.js"></script>
    </head>

Código del nuevo documento: micodigo.js

$(document).bind("mobileinit", function() {

    // Código de inicio para JQuery mobile

  $.mobile.ajaxEnabled = false;
  $.mobile.defaultPageTransition = "slideup";
  $.mobile.defaultDialogTransition = "flip";
  $.mobile.loadingMessage = "Por favor espere...";
  $.mobile.pageLoadErrorMessage = "No se ha podido cargar la página";

    // Eventos de gestos

  $("zona").bind("tap", function() {
  });

  $("zona").bind("taphold", function() {
  });

  $("zona").bind("swipeleft", function() {
  });

  $("zona").bind("swiperight", function() {
  });

    // Eventos de mouse virtuales

  $("zona").bind("vclick", function() {
  });

    // Eventos de orientación

  $(document).bind("orientationchange", function() {
  });

    // Eventos de scroll

  $(document).bind("scrollstart", function() {
  });

  $(document).bind("scrollstop", function() {
  });

    // Eventos de página

  $("pagina1").bind("pageinit", function() {
  });

    // Eventos de página externa

  $(document).bind("pageloadfailed", function() {
      alert("Falló la carga de la página");
  });

  $("pagina1").bind("pagechange", function() {
  });

  $("pagina1").bind("pageshow", function() {
  });

  $("pagina1").bind("pagehide", function() {
  });

    // Eventos layout

  $(document).bind("updatelayout", function() {
  });

  $(document).bind("animacionComplete", function() {
  });

});


crear ACCESS TOKEN FACEBOOK

Cómo conseguir un “access_token” para acceder a datos remotamente de páginas en facebook, o lo que se tercie que se necesite.
Lo cierto es que cada vez me cuesta más entender según que cosas. Pero ahora FB (no sé desde cuando) requiere que se meta un “access_token” para leer datos de páginas y demás. En general es una manera de autentificar las conexiones a FB y evitar que la información pública (páginas de facebook) no sea tan accesible desde el exterior de la red.
Un cliente alimenta su web con el contenido que va publicando en FB, hasta ahora no había problemas pero no sabemos desde cuando el acceso esta denegado por un:
{
"error": {
"type": "OAuthException",
"message": "An access token is required to request this resource."
}
}
Pues a crear un “access token”!!! no es complicado, jejeje, si se saben los pasos (algo más de una hora me ha llevado entender lo que tenía que hacer).
Primero… crear una Aplicación de FB en developers/createapp.
Con crearla y guardarla es suficiente, de ahí sacaremos los dos datos que necesitamos:
Facebook access token
Luego sólo necesitamos coger el “Application ID” y el “App secret” y sustituirlos en esta URL, y ponerla en el navegador:
https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials
y ya tenemos nuestro access_token:
Facebook access token 02
Y ya podemos acceder a los datos del muro que luego utilizamos a nuestro gusto.
Y antes decía no entendía porque las páginas en principio son públicas, sólo se necesita “access_token” si ésta tiene alguna restricción de edad o país, y no es el caso de ninguna de las que he tenido que utilizar, pero lo requería. ¿?¿?¿?
Por supuesto la App “rafaespada” no existe en facebook!!!

Conocer si quien visita es Fan de FB, de lo contrario invitarlo


En primer lugar, como ya he explicado en post anteriores, debemos crear una aplicación sencilla donde le pidamos el permiso para acceder a sus datos de fb. Nada del otro mundo.
Luego,con el siguiente codigo, podemos saber si quien nos visita, le ha dado clicks a nuestro fan page en FB : 
todo el siguiente codigo debe ser invocado desde otro lugar, en este caso usaremos un iframe que llame a todo este html, por ejemplo : wwwmidominio.com/esfan.html y lo llamaremos asi:

<iframe scrolling="no" style="border:none; overflow:hidden; width:400px; height:200px;" src="wwwmidominio.com/esfan.html"></iframe>


y wwwmidominio.com/esfan.html  vendria a ser todo lo siguiente :


<html>
<head>

<style>


.box_img-background {
  background: #DDDDDD ;
  width: 460px !important;
  height: 200px;
  float: left;
  position: relative;
}
.box_img-background .box_rs {
  position: absolute;
  left: 50px;
  top: 25px;
}

.box_img-fan {
  background: black url(http://ranking2013.studio92.com/tmp/img/img-esfan.jpg) no-repeat 0 0;
  width: 460px !important;
  height: 200px;
  float: left;
  position: relative;
}
.box_img-fan .box_rs {
  position: absolute;
  left: 50px;
  top: 25px;
}

</style>

//**CAMBIAR CON EL LINK DE TU FAN PAGE**//

</HEAD>
<body>
  <div id="iframee" class="box_img-background"  style="display:none; padding: 15px;">
  <div class="fb-like-box" data-href="https://www.facebook.com/ [TU PAGINA FB] " data-width="400" data-show-faces="false" data-stream="false" data-header="false"></div>
  </div>
  <div id="sifan" class="box_img-fan" style="display:none; padding: 15px;"> ya eres fan! </div>
<div id="fb-root"></div>
<script>

 
  window.fbAsyncInit = function(){
   
  FB.init({
    appId      : '121212121212121', //** App ID DE TU APLICACION QUE DA PERMISOS **//
    channelUrl : 'www.midominio.channel', //** aqui colocar url que ya conpartire mas adelante**//
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  });

  FB.Event.subscribe('edge.create', function(response) {
     /*  $.post("common/securimage/likes.php", {id: userObject.userid,voto:1,fb:userObject.username},
        function(rest){
            if(rest){
                $('#likebutton').show();
                $('#fade_1').show();
            }
           
            else{
              alert('se produjo un error de conexion, por favor, intentarlo nuevamente. ');
              window.location='index.php';
            }
        });*/
  document.location.href = document.location.href;
 });
  // Additional initialization code here
 
  FB.Canvas.setSize({ width:810, height:680});

  init();

  function init(){

    FB.getLoginStatus(function(response) {
      FB.api('me/likes/175008385878292',function(response) {
     
          if(response.data) {
              if( !isEmpty(response.data) ){
                 document.getElementById("sifan").style.display="block";
              }else{
                document.getElementById("iframee").style.display="block";
              }
                 
          }else{
              document.getElementById("iframee").style.display="block";
          }
      });
   
    });

   


    };

  }

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>

</body>
</html>

para finalizar :

www.midominio.channel teiene solo este codigo : 

<script src="//connect.facebook.net/en_US/all.js"></script>



CommentFB