Playlist com Youtubil

O Youtube fornece uma API para tratar os videos e playlists em HTML. Para usa-la basta fazer duas coisinhas.
No html:

<div id="ytplayer" class="embed"></div>

No Javascript:

    window.onYouTubePlayerAPIReady = function () {
        var lastState;
        var playlistPaused;
        var onStateChange = function (event) {
            if (event.data === YT.PlayerState.PLAYING) {
                console.log('video tocando.');
            } else if (event.data === YT.PlayerState.PAUSED) {
                console.log('video pausado');
            } else if (event.data === YT.PlayerState.ENDED) {
                console.log('video finalizado');
            }
        };

        var player = new YT.Player('ytplayer', {
            height: '560',
            width: '315',
            playerVars: {
                listType: 'playlist',
                list: 'PLGfdhjYdO0ECtwQ_BdEI8aVyywzK40B97',
                'fs': 1,
                'iv_load_policy': 3,
                'controls': 1,
                'rel': 0,
                'showinfo': 0
            },
            events: {
                "onStateChange": onStateChange
            }
        });
    };

Barbada!!!!

Tirando a beleza

Olha só que maravilha esse código:


var el = document.querySelectorAll('style,link');
for (var i=0; i<el.length; i++) {
el[i].parentNode.removeChild(el[i]);
};

remove os elementos estilos de uma página, deixando ela limpinha, sequinha. Pode ser util

Limpando uma sujeira

Esses dias precisei de um código para remover parâmetros de uma queryString, achei esse:

function removeURLParam(url, param)
{
 var urlparts= url.split('?');
 if (urlparts.length>=2)
 {
  var prefix= encodeURIComponent(param)+'=';
  var pars= urlparts[1].split(/[&;]/g);
  for (var i=pars.length; i-- > 0;)
   if (pars[i].indexOf(prefix, 0)==0)
    pars.splice(i, 1);
  if (pars.length > 0)
   return urlparts[0]+'?'+pars.join('&');
  else
   return urlparts[0];
 }
 else
  return url;
}

Link original em: http://stackoverflow.com/questions/1634748/how-can-i-delete-a-query-string-parameter-in-javascript

Parem as prensas

Esses dias eu fiquei curioso para saber a diferença entre stopPropagation e preventDefault. Segue a explicação que eu achei.

  • stopPropagation é utilizado para ter certeza que o evento não vai “borbulhar” para cima.
    ex: o clique em um também ir gerar um click no <td> dispara um clique no <tr> e no <table>. O stopPropagation evita que isso ocorra.
  • preventDefault é utilizado para evitar a ação normal de um elemento.
    ex: o preventDefault em um clique sobre um link ira evitar da url ser aberta, o em um botão evitar de postar o formulário.

Essa explicação me ajudou bastante.

Falando por alguém

Integrações com redes sociais são cada vez mais necessárias. Recententemente fiz uma com o Facebook.

Postando no feed da pessoa que autorizou o aplicativo  Material original em https://developers.facebook.com/docs/graph-api/reference/v2.0/user/feed

Implementei o seguinte código:

FB.api(
    "/me/feed",
    "POST",
    {
        message: "Estou postanto em nome da pessoa",
        link: 'http://calielcosta.com',
        name: "nome do link",
        description: "descrição do link"
        privacy: {
            value: 'EVERYONE'
        },
        actions: [
            {
                name: "Sobre",
                link: "http://calielcosta.com/about/",
            },
        ],
    },
    function (response) {
        if (response && response.error) {
            console.error(JSON.stringify(response.error));
        }
    }
);

Importante:
É necessário que o usuário tenha liberado a permissão publish_action para realizar a publicação de ações em seu nome.