<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Javascript Archives - Pereira, Thiago Santos.</title>
	<atom:link href="https://thiagosantos.com/blog/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>https://thiagosantos.com/blog/category/javascript/</link>
	<description>the fun of code.</description>
	<lastBuildDate>Sat, 02 Mar 2024 17:58:23 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5</generator>
	<item>
		<title>Microsoft Teams: Deeplink pro seu App através da Notificação</title>
		<link>https://thiagosantos.com/blog/856/javascript/microsoft-teams-deeplink-pro-seu-app-atraves-da-notificacao/</link>
					<comments>https://thiagosantos.com/blog/856/javascript/microsoft-teams-deeplink-pro-seu-app-atraves-da-notificacao/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Sat, 02 Mar 2024 17:47:33 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Deeplink]]></category>
		<category><![CDATA[Deeplink Microsoft Teams]]></category>
		<category><![CDATA[Microsoft Teams]]></category>
		<category><![CDATA[Notificação]]></category>
		<category><![CDATA[Teams]]></category>
		<guid isPermaLink="false">https://thiagosantos.com/blog/?p=856</guid>

					<description><![CDATA[<p>Uma sacada de como passar parâmetros para o seu aplicativo no Microsoft Teams</p>
<p>The post <a href="https://thiagosantos.com/blog/856/javascript/microsoft-teams-deeplink-pro-seu-app-atraves-da-notificacao/">Microsoft Teams: Deeplink pro seu App através da Notificação</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Desenvolvendo recentemente um meio de integrar um aplicativo web já existente ao Microsoft Teams, me deparei com a necessidade de que a notificação do Teams ao direcionar para o aplicativo instalado dentro do Teams também passasse um parâmetro extra para que o aplicativo existente pudesse tratar esse parâmetro e redirecionar o usuário para área correta.</p>



<p>Foi custoso achar uma resposta para isso, mas acabei com a ajuda de um colega e dessa maravilhosa página <a href="https://microsoft.github.io/app-camp/aad/Deeplink/" target="_blank" rel="noreferrer noopener">https://microsoft.github.io/app-camp/aad/Deeplink/</a>  conseguir passar parâmetro para dentro da aplicação quando abre através da Notificação.</p>



<span id="more-856"></span>



<p>Quando você envia uma notificação para o usuário do seu aplicativo no Teams você tem a possibilidade de estabelecer duas formas de ao clicar na notificação o usuário ser direcionado para o seu aplicativo direto utilizando o source no item topic como text ou entityURL e passando o value ou o webUrl como no exemplo abaixo.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
//Corpo do envio da notificação
//POST https://graph.microsoft.com/v1.0/teamwork/sendActivityNotificationToRecipients
{    
   &quot;topic&quot;: {
       &quot;source&quot;: &quot;entityUrl&quot;,
       &quot;value&quot;: &quot;https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{teams_app_id}&quot;
   },

    &quot;activityType&quot;: &quot;novaNotificacao&quot;,
    &quot;previewText&quot;: {
        &quot;content&quot;: &quot;Temos uma nova informação para você!!&quot;
    },
    &quot;recipients&quot;: &#x5B;
        {
            &quot;@odata.type&quot;: &quot;microsoft.graph.aadUserNotificationRecipient&quot;,
            &quot;userId&quot;: &quot;617310a6-9d5d-4459-b268-07802596d419&quot;
        }
    ]
}
</pre></div>


<p>Utilizando o entityUrl é o jeito mais simples de ao clicar na notificação o seu usuário seja redirecionado para o seu aplicativo dentro do Teams. Acontece que através desse método não é possível passar parâmetros nem especificar em qual das abas do seu aplicativo você quer que abra inicialmente. O jeito é usar o modo text passando o weburl. O webURL é uma url do Teams que no entanto utiliza o ID do Teams que é gerado quando envia o aplicativo para a loja de aplicativos da organização, seguido do entityId é que a aba a qual você quer abrir dentro do seu aplicativo. No código abaixo fica mais fácil de entender.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
//Corpo do envio da notificação
//POST https://graph.microsoft.com/v1.0/teamwork/sendActivityNotificationToRecipients
{
    &quot;topic&quot;: {
        &quot;source&quot;: &quot;text&quot;,
        &quot;webUrl&quot;: &quot;https://teams.microsoft.com/l/entity/{uploaded_teams_app_id}/{entity_id}?context=%7B%22subEntityId%22:%22https://exemplo.com.br/timeline/post/1406%22%7D&quot;
    },
    &quot;activityType&quot;: &quot;novaNotificacao&quot;,
    &quot;previewText&quot;: {        
        &quot;content&quot;: &quot;Temos uma nova informação para você!!&quot;
    ]},   
    &quot;recipients&quot;: &#x5B;
        {
            &quot;@odata.type&quot;: &quot;microsoft.graph.aadUserNotificationRecipient&quot;,
            &quot;userId&quot;: &quot;617310a6-9d5d-4459-b268-07802596d419&quot;
        }
    ]
}
</pre></div>


<p>A sacada para o envio de um parâmetro seu para dentro do seu aplicativo é utilizar o parâmetro &#8220;context&#8221; onde um JSON no formato {&#8220;subEntityId&#8221;:&#8221;XXXXX&#8221;} é passado o valor do subEntityId que pode ser um valor número, uma string ou até um objeto é recuperado através do Teams JS SDK, mas para confusão geral o parâmetro dentro do objeto do contexto é &#8220;context.page.subPageId&#8221;, chora.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
//dentro da sua aplicação
//....
try{

    await app.initialize();
    const context = app.getContext();
    const parametro_passado = context.page.subPageId; //:)        

}
//...
</pre></div>


<p>Resumindo: você passa o contexto utilizando o subEntityId e recupera através do Teams JS SDK utilizando o objeto de contexto no &#8220;context.page.subPageId&#8221;.</p>



<p>Dai com o parâmetro em mãos você faz o que precisa fazer antes da aplicação carregar. No contexto você pode passar uma URL e configurar o seu app para redirecionar o parametro_passado com o valor da URl. Isso simplifica bastante o desenvolvimento e redirecionamento interno.</p>



<p></p>
<p>The post <a href="https://thiagosantos.com/blog/856/javascript/microsoft-teams-deeplink-pro-seu-app-atraves-da-notificacao/">Microsoft Teams: Deeplink pro seu App através da Notificação</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/856/javascript/microsoft-teams-deeplink-pro-seu-app-atraves-da-notificacao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Google Analytics &#8211; GA event tracking não funcionando</title>
		<link>https://thiagosantos.com/blog/675/javascript/google-analytics-ga-event-tracking-nao-funcionando/</link>
					<comments>https://thiagosantos.com/blog/675/javascript/google-analytics-ga-event-tracking-nao-funcionando/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Mon, 09 Apr 2018 23:08:59 +0000</pubDate>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Javascript]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=675</guid>

					<description><![CDATA[<p>Olá! Se você veio aqui por quê você acabou de colocar as novas tags do Google Analytics e achou que a antiga função do &#8220;ga()&#8221; para enviar eventos iria funciona e não funcionou você veio ao lugar certo! O Google Analytics está liberando uma nova versão do seu script de tracking chamado gtag.js. Para o [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/675/javascript/google-analytics-ga-event-tracking-nao-funcionando/">Google Analytics &#8211; GA event tracking não funcionando</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Olá!<br />
Se você veio aqui por quê você acabou de colocar as novas tags do Google Analytics e achou que a antiga função do &#8220;ga()&#8221; para enviar eventos iria funciona e não funcionou você veio ao lugar certo!<span id="more-675"></span></p>
<p>O Google Analytics está liberando uma nova versão do seu script de tracking chamado gtag.js. Para o gtag.js monitorar os seus eventos você precisa trocar o seu antigo esquema de GA por GATAG, conforme o código abaixo.</p>
<p>Ao invés de usar</p>
<pre lang="js">ga('send', 'event', 'Comprar', 'click');
</pre>
<p>deveria ser</p>
<pre lang="js">gtag('event', 'click', {
    'event_category': 'Comprar'
});
</pre>
<p>Se você usa o parametro label pode adicionar uma outra propriedade chamada &#8216;event_label&#8217;, conforme código abaixo.</p>
<pre lang="js">gtag('event', 'click', {
    'event_category': 'Comprar',
    'event_label':'Campanha de natal'
});
</pre>
<p>Boa sorte!</p>
<p>Fonte:</p>
<p>Ana K no <a href="https://www.en.advertisercommunity.com/t5/Google-Analytics-Tracking-Goals/Google-Analytics-Custom-Event-Not-Working/td-p/1250680#M11141">Advertiser Community</a></p>
<p>The post <a href="https://thiagosantos.com/blog/675/javascript/google-analytics-ga-event-tracking-nao-funcionando/">Google Analytics &#8211; GA event tracking não funcionando</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/675/javascript/google-analytics-ga-event-tracking-nao-funcionando/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Javascript &#8211; IE &#8211; Identificador, cadeia ou número esperado</title>
		<link>https://thiagosantos.com/blog/501/javascript/javascript-ie-identificador-cadeia-ou-numero-esperado/</link>
					<comments>https://thiagosantos.com/blog/501/javascript/javascript-ie-identificador-cadeia-ou-numero-esperado/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Wed, 04 Sep 2013 00:33:01 +0000</pubDate>
				<category><![CDATA[InternetExplorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[ie7]]></category>
		<category><![CDATA[internetexplorer]]></category>
		<category><![CDATA[javascript debug]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=501</guid>

					<description><![CDATA[<p>Se você estiver trabalhando com Javascript e se deparar com a mensagem de erro &#8220;Identificador, cadeia ou número esperado&#8221; saiba que a solução é simples! Quando você faz uma lista baseado em um objeto literal é comum esquecermos uma virgula no final, como segue o exemplo abaixo, os navegadores de verdade ignoram o último elemento [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/501/javascript/javascript-ie-identificador-cadeia-ou-numero-esperado/">Javascript &#8211; IE &#8211; Identificador, cadeia ou número esperado</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Se você estiver trabalhando com Javascript e se deparar com a mensagem de erro &#8220;Identificador, cadeia ou número esperado&#8221; saiba que a solução é simples!</p>
<p>Quando você faz uma lista baseado em um objeto literal é comum esquecermos uma virgula no final, como segue o exemplo abaixo, os navegadores de verdade ignoram o último elemento enquanto o IE 7  aguarda por uma outra propriedade que não existe, por isso ocorre a mensagem de erro. Reparem ao final do valor 4000 da propriedade auto, há uma virgula!</p>
<p>Para resolver isso basta tirar a virgula depois da última propriedade.</p>
<pre lang="javascript"> jQuery(".class_nivoslider_videos").simplecarousel({
                    width:296,
                    height:194,
                    visible: 1,
                    auto: 4000,
            });</pre>
<p>Tão simples que dá até raiva, não é?</p>
<pre lang="javascript"> jQuery(".class_nivoslider_videos").simplecarousel({
                    width:296,
                    height:194,
                    visible: 1,
                    auto: 4000
            });</pre>
<p>The post <a href="https://thiagosantos.com/blog/501/javascript/javascript-ie-identificador-cadeia-ou-numero-esperado/">Javascript &#8211; IE &#8211; Identificador, cadeia ou número esperado</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/501/javascript/javascript-ie-identificador-cadeia-ou-numero-esperado/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Burlando o LinkSave</title>
		<link>https://thiagosantos.com/blog/198/javascript/burlando-o-linksave/</link>
					<comments>https://thiagosantos.com/blog/198/javascript/burlando-o-linksave/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Wed, 13 Apr 2011 00:52:28 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[bular link save]]></category>
		<category><![CDATA[burlando linksave]]></category>
		<category><![CDATA[burlar]]></category>
		<category><![CDATA[burlar linksave]]></category>
		<category><![CDATA[linksave]]></category>
		<category><![CDATA[protetor de link burlar]]></category>
		<category><![CDATA[protetor de links]]></category>
		<guid isPermaLink="false">http://www.thiagosantos.com/blog/?p=198</guid>

					<description><![CDATA[<p>Há algo mais chato e entediante do que querer fazer um download e ser forçado a esperar 40 segundos ou cadastrar o seu celular para poder fazer o download? É assim que funciona o LinkSave, mas existem inúmeros. O código abaixo é só para o LinkSave e deve ser digitado na sua barra de endereço. [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/198/javascript/burlando-o-linksave/">Burlando o LinkSave</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Há algo mais chato e entediante do que querer fazer um download e ser forçado a esperar 40 segundos ou cadastrar o seu celular para poder fazer o download?</p>
<p>É assim que funciona o LinkSave, mas existem inúmeros.</p>
<p>O código abaixo é só para o LinkSave e deve ser digitado na sua barra de endereço.</p>
<blockquote><p><span style="color: #808000;">javascript:segundos=0;contador();void(0);</span></p></blockquote>
<p>E o botão lá embaixo funciona mágicamente sem ter que cadastrar nada e nem esperar um século, se alguem quiser explicações do código comenta ai.</p>
<p>Abraço</p>
<p>The post <a href="https://thiagosantos.com/blog/198/javascript/burlando-o-linksave/">Burlando o LinkSave</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/198/javascript/burlando-o-linksave/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Twitter Under XSS Attack : patch</title>
		<link>https://thiagosantos.com/blog/152/javascript/twitter-under-xss-attack/</link>
					<comments>https://thiagosantos.com/blog/152/javascript/twitter-under-xss-attack/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Tue, 21 Sep 2010 13:38:08 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Twiiter]]></category>
		<category><![CDATA[Workaround]]></category>
		<category><![CDATA[21 september]]></category>
		<category><![CDATA[correçao]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[xss]]></category>
		<category><![CDATA[xss attack]]></category>
		<guid isPermaLink="false">http://www.thiagosantos.com/blog/?p=152</guid>

					<description><![CDATA[<p>Demorou um tempo mas aconteceu novamente!<br />
Twitter alvo de XSS em massa (#TwitterUnderXSSAttack ) , mas vamos parar de falatorio e ir direto a solução temporaria.</p>
<p>The post <a href="https://thiagosantos.com/blog/152/javascript/twitter-under-xss-attack/">Twitter Under XSS Attack : patch</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Demorou um tempo mas aconteceu novamente!<br />
Twitter alvo de XSS em massa (#TwitterUnderXSSAttack ) , mas vamos parar de falatorio e ir direto a solução temporaria.</p>
<p>Na sua barra de endereço do seu navegador (onde vc digita o www) cole o codigo a seguir e tecle &#8220;enter&#8221;.</p>
<blockquote><p><strong>javascript:$(&#8216;.modal-overlay&#8217;).each(function(e,f){ $(f).removeClass(&#8216;modal-overlay&#8217;)});</strong></p></blockquote>
<p>Aproveitando o attack dos caras, criei o meu próprio que vai anular o deles é só mandar a mensagem no Twitter ( ainda não fiz muitos testes ) :</p>
<blockquote><p><strong><br />
http://t.co/@&#8221;onmouseover=&#8221;javascript: $(&#8216;.modal-overlay&#8217;).each(function(e,f){ $(f).removeClass(&#8216;modal-overlay&#8217;)})&#8221;class=&#8221;modal-overlay&#8221;/ #workaround RT</strong></p></blockquote>
<p>Dessa forma ele vai tirar o overlay que fica sobre a sua página, em seguida você imediatamente vai tirar o RT e deletar todos os seus post com o tal do</p>
<blockquote><p>http://t.co/@&#8221;onmouseover=&#8221;document.getElementById(&#8216;status&#8217;).value=&#8217;RT  Matsta&#8217;;$(&#8216;.status-update-form&#8217;).submit();&#8221;class=&#8221;modal-overlay&#8221;/</p></blockquote>
<p>E não usem o Twitter web até que esteja seguro novamente, use um dos milhares de clients!<br />
Ou usem o Twitter mobile em <a href="https://mobile.twitter.com/">https://mobile.twitter.com/</a><br />
Pq bloquear todos os seus amigos não vai ser muito interessante né?rs</p>
<p>Abraço</p>
<p>The post <a href="https://thiagosantos.com/blog/152/javascript/twitter-under-xss-attack/">Twitter Under XSS Attack : patch</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/152/javascript/twitter-under-xss-attack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cookie, para que não se repita mais.</title>
		<link>https://thiagosantos.com/blog/124/php/cookie-para-que-nao-se-repita-mais/</link>
					<comments>https://thiagosantos.com/blog/124/php/cookie-para-que-nao-se-repita-mais/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Thu, 02 Sep 2010 15:11:07 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[setcookie]]></category>
		<guid isPermaLink="false">http://www.thiagosantos.com/blog/?p=124</guid>

					<description><![CDATA[<p>Aprender com o tempo, é uma metafóra não se esqueça disso. Ninguem aprende com o tempo, nem o tempo aprende conosco. O tempo passa e se nós não estivemos na roda ele vai girar  perdemos a vez e o conhecimento se não treinarmos e nem estudarmos. Aprender com o tempo é: você que está na [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/124/php/cookie-para-que-nao-se-repita-mais/">Cookie, para que não se repita mais.</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Aprender com o tempo, é uma metafóra não se esqueça disso. Ninguem aprende com o tempo, nem o tempo aprende conosco. O tempo passa e se nós não estivemos na roda ele vai girar  perdemos a vez e o conhecimento se não treinarmos e nem estudarmos.<br />
Aprender com o tempo é: você que está na roda, girando igual a todo mundo, mantendo atividades a qual seja necessário usar a mente de forma a resolver quebra-cabeças, aprendendo com os movimento, acertando e errando.</p>
<p>Pois bem, creio que o <span style="color: #333399;">setcookie </span>seja uma função típica e comum de usuário do PHP. Usando essa função que perdi, por distração, dois dias de trabalho o que acho ser um absurdo. Abaixo segue um cenário a qual eu me encontrava e a solução encontrada.</p>
<p><span id="more-124"></span></p>
<p>Vou dar uma passada no <span style="color: #333399;">setcookie</span>:</p>
<address><span style="color: #333399;"><span style="color: #000000;">setcookie</span>(_nome [, _valor , _data_expiracao , _path , _domain, _secure, _httponly ])</span></address>
<p>Exceto o _nome, todos os outros campos são opcionais.</p>
<p><strong>_nome</strong> &#8211; nome do cookie<br />
<strong>_valor</strong> &#8211; valor que o cookie vai ter, se nada for definido ele será string vazia ( &#8220;&#8221; )<br />
<strong>_data_expiracao</strong> &#8211; data em que o cookie vai expirar<br />
<strong>_path</strong> &#8211; local onde o cookie vai estar disponivel [ rs ]<br />
<strong>_domain</strong> &#8211; dominio onde o cookie vai estar disponivel ( .thiagosantos.com [ todo os subdominios ], www.thiagosantos.com [ somente no www ] ), se o domain não for definido vai ser utilizado o dominio que fez a requisicao do cookie.<br />
<strong>_secure</strong> &#8211; true ou false, o cookie só sera transmitido via HTTPS<br />
<strong>_httponly</strong> &#8211; muito bacana, o cookie fica &#8220;invisivel&#8221; para o javasxcript a partir do PHP 5.2</p>
<p>Cenário, a partir da <em><strong>&#8216;/&#8217;</strong></em> eu fazia uma requisicao por ajax para o caminho <strong><em>&#8216;/buu/foo&#8217;</em></strong> que fazia o que tinha de ser feito e depois setava um cookie. Quando eu atualizava a página a informação que deveria aparecer na página inicial, simplesmente não aparecia. Dai achei que era algum problema comigo, e implementei um retorno que definia o cookie pelo javascript localizado no<em><strong> &#8216;/&#8217;</strong></em>.<br />
Então eu tinha dois pontos que setavam o mesmo cookie um pelo PHP e o outro pelo Javascript. E quando eu tentava apagar o cookie pelo javascript a informação simplesmente sumia, como esperado. Mas quando fazia uma nova requisicao por ajax ao<strong><em> &#8216;/buu/foo</em></strong>&#8216; todas as informações do cookie antigo que haviam sido apagadas pelo Javascript simplesmente voltavam!!<br />
Ooohhh!!!<br />
Já deu pra entender o que eu tinha esquisito quando defini o cookie no PHP né?<br />
Éeeehh isso mesmo esqueci de definir o &#8216;path&#8217; no <span style="color: #333399;">setcookie</span>, quando eu apagava o cookie pelo Javascript, eu apagava o mesmo que eu tinha definido antes só que para<strong><em> &#8216;/&#8217; </em></strong>, mas não apagava o que eu havia setado para o PHP em <em><strong>&#8216;/buu/foo&#8217;</strong></em> &#8230; rs<br />
Então é isso, defini o path no PHP para <em><strong>&#8216;/&#8217;</strong></em> e removi a implementação de cookie por Javascript, umas vez que não se vazia mais necessário.<br />
E tudo mágicamente começou a funcionar como o esperado.</p>
<p>Mas uma gota de experiência deixada no blog.</p>
<p>Até mais,</p>
<p>The post <a href="https://thiagosantos.com/blog/124/php/cookie-para-que-nao-se-repita-mais/">Cookie, para que não se repita mais.</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/124/php/cookie-para-que-nao-se-repita-mais/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Grooveshark sem banner</title>
		<link>https://thiagosantos.com/blog/92/javascript/grooveshark-sem-banner/</link>
					<comments>https://thiagosantos.com/blog/92/javascript/grooveshark-sem-banner/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Mon, 26 Apr 2010 03:35:20 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[grooveshark no banner]]></category>
		<category><![CDATA[grooveshark sem banner]]></category>
		<category><![CDATA[grooveskark]]></category>
		<category><![CDATA[no banner grooveshark]]></category>
		<category><![CDATA[vunerabilidade jquery]]></category>
		<guid isPermaLink="false">http://www.thiagosantos.com/blog/?p=92</guid>

					<description><![CDATA[<p>É em momentos como esse que nós ficamos a mercê dos usuários e dos nossos códigos client-side. Um site de música muito bom, e quem vem crescendo bastante é o Grooveshark; eles tem uma ferramenta incrível para ouvir música por streaming. Você só precisa colocar o nome da banda, ou da música e aparece uma [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/92/javascript/grooveshark-sem-banner/">Grooveshark sem banner</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>É em momentos como esse que nós ficamos a mercê dos usuários e dos nossos códigos client-side. Um site de música muito bom, e quem vem crescendo bastante é o <a title="Grooveshark!" href="http://grooveshark.com">Grooveshark</a>; eles tem uma ferramenta incrível para ouvir música por streaming. Você só precisa colocar o nome da banda, ou da música e aparece uma lista de canções relacionadas, você pode ainda colocar suas próprias canções lá e deixar o mundo te ouvir.</p>
<p>Mas vamos mesmo ao que interessa: roda sobre o Grooveshark o <a title="jQuery" href="http://jquery.org">jQuery </a>e aparentemente um aplicativo em Flex, tudo rodando online e não é necessário baixar, diretamente, nenhum programa pra sua maquina.</p>
<p><span id="more-92"></span></p>
<p>O que precisamos saber é que a aplicação se ajusta conforme a dimensão do navegador e que fica dentro da div de id &#8220;mainContentWrapper&#8221;, e o banner da direita fica sobre uma div de id &#8220;adBar&#8221;, sabendo isso com uma linha de comando é possível tirar o banner do site:<br />
na sua barra de endereço com o Grooveshark aberto, copie e cole o código abaixo abaixo:</p>
<p><code><br />
<del datetime="2010-06-21T20:45:55+00:00">javascript:$("#adBar").hide();$("#mainContentWrapper").css("marginRight",0);  alert('Sumiu!!');</del></code></p>
<p><code><span style="text-decoration: line-through;">javascript:$("#sidebar").hide();$("#mainContentWrapper").css("marginRight",0); alert('Sumiu!!');</span></p>
<p><del>javascript:jQuery('#capital').hide();jQuery('#application').css({'margin-right':0});jQuery(window).trigger('resize');void(0);</del><br />
</code><br />
<span style="color: #0000ff;">javascript:$(&#8216;#capital&#8217;).remove();$(&#8216;#application&#8217;).css({&#8216;margin-right&#8217;:&#8217;0px&#8217;});$(&#8216;#page_wrapper&#8217;).css({&#8216;width&#8217;:&#8217;1080px&#8217;});$(&#8216;#grooveshark&#8217;).trigger(&#8216;click&#8217;);alert(&#8216;Foi&#8217;);</span></p>
<p>&nbsp;</p>
<p>Dessa forma é usamos o jQuery a nosso favor, manipulando elementos que estão  contidos no HTML. Observamos a frágilidade de códigos JavaScript, e como é fácil inserir, remover e esconder conteúdo  a partir deles.</p>
<p>Até mais.</p>
<p>[ atualizado &#8211; 21/06/2010 &#8211; 17:43 ]<br />
[ atualizado &#8211; 21/03/2011 &#8211; 14:30 ]<br />
[ atualizado &#8211; 19/07/2011 &#8211; 14:37 ]</p>
<p>The post <a href="https://thiagosantos.com/blog/92/javascript/grooveshark-sem-banner/">Grooveshark sem banner</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/92/javascript/grooveshark-sem-banner/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
