--- title: Manipuladores de protocolo web slug: orphaned/Manipuladores_de_protocolo_web tags: - Firefox 3 original_slug: Manipuladores_de_protocolo_web --- <p>{{ Fx_minversion_header(3) }} </p> <h3 id="Vis.C3.A3o_geral" name="Vis.C3.A3o_geral"> Visão geral </h3> <p>É comum encontrar páginas com links para recursos utilizando protocolos não-<code>http</code>. Um exemplo é o protocolo <code>mailto:</code>: </p> <pre><a href="mailto:webmaster@exemplo.com">Web Master</a> </pre> <p>Autores podem usar um link <code>mailto:</code> quando desejam fornecer uma maneira conveniente de enviar mensagens diretamente da página. Quando o link é ativado, o navegador deve lançar a aplicação padrão do sistema para manipular emails. Você pode pensar nisso como um manipulador de protocolos <i>baseado no desktop</i>. </p><p>Manipuladores de protocolos baseados na web permitem que aplicações web também participem desse processo. Isso tem-se tornado mais importante à medida em que mais e mais tipos de aplicações tem migrado para a web. Na verdade, existem várias aplicações que manipulam mensagens baseadas na web que poderiam processar os links <code>mailto</code>. </p> <h3 id="Registrando" name="Registrando"> Registrando </h3> <p>Registrar uma aplicação web como manipulador de protocolos não é um processo difícil. Basicamente, a aplicação web deve utilizar o o método <code><a href="pt/DOM/window.navigator.registerProtocolHandler">registerProtocolHandler()</a></code> para registrar-se como manipulador em potencial para um determinado protocolo. Por exemplo: </p> <pre>navigator.registerProtocolHandler("mailto", "https://www.exemplo.com/?uri=%s", "Correio de Exemplo"); </pre> <p>Onde os parâmetros são: </p> <ul><li> O protocolo; </li><li> A URL do documento utilizado como manipulador; o "%s" será substituido pelo valor do atributo <code>href</code> do link e um GET será executado na URL resultante; </li><li> O nome amigável do manipulador. </li></ul> <p>Quando um navegador executa esse código, ele deve pedir permissão ao usuário para registrar a aplicação como manipulador do protocolo. O Firefox exibe um prompt na barra de notificação: </p><p><img alt="Image:mpw-notificacao.png"> </p><p>{{ Note() }} </p> <h4 id="Exemplo" name="Exemplo"> Exemplo </h4> <pre><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>Exemplo de manipulador de protocolo - Registro</title> <script type="text/javascript"> navigator.registerProtocolHandler("falso", "http://loremipsum.org/projetos/mpw.php?valor=%s", "Falso Mail"); </script> </head> <body> <h1>Exemplo de manipulador de protocolo</h1> <p>Esta página instalará um manipulador de protocolos para o protocolo <code>falso:</code>.</p> </body> </html> </pre> <h3 id="Ativando" name="Ativando"> Ativando </h3> <p>Agora, sempre que o usuário ativar um link que utiliza o protocolo registrado, o navegador direcionará a ação para a URL fornecida pela aplicação registrada. O Firefox irá, por padrão, perguntar ao usuário antes de executar a ação. </p><p><img alt="Image:mpw-executar.png"> </p> <h4 id="Exemplo_2" name="Exemplo_2"> Exemplo </h4> <pre><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>Exemplo de manipulador de protocolo - Teste</title> </head> <body> <p>Ei, você já viu <a href="falso:URL%20de%20exemplo">isso</a> antes?</p> </body> </html> </pre> <h3 id="Manipulando" name="Manipulando"> Manipulando </h3> <p>A próxima fase é manipular a ação. O navegador extrai o valor do atributo <code>href</code> do link ativado, combina esse valor com a URL fornecida pelo manipulador durante o registro e executa um HTTP GET na URL. Assim, usando os exemplos acima, o navegador executaria um GET na seguinte URL: </p> <pre>http://loremipsum.org/projetos/mpw.php?valor=falso:URL%20de%20exemplo </pre> <p>Programas no servidor podem extrair os parâmetros e executar a ação desejada. </p><p>{{ Note("o valor <b>inteiro</b> do atributo <code>href</code> é passado ao programa do servidor. Isso significa que o programa no servidor deverá separar o protocolo dos dados.") }} </p> <h4 id="Exemplo_3" name="Exemplo_3"> Exemplo </h4> <pre><?php $value = ""; if ( isset ( $_GET["valor"] ) ) { $value = $_GET["valor"]; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>Exemplo de manipulador de protocolo</title> </head> <body> <h1>Exemplo de manipulador de protocolo - Manipulador</h1> <p>Esta página é chamada ao manipular uma ação do protocolo <code>falso:</code>. Dados enviados:</p> <textarea> <?php echo(urldecode($valor)) ?> </textarea> </body> </html> </pre> <p><span class="comment">Categorias</span> </p><p><span class="comment">Interwiki Language Links</span> </p>{{ languages( { "en": "en/Web-based_protocol_handlers", "fr": "fr/Gestionnaires_de_protocoles_web", "ja": "ja/Web-based_protocol_handlers", "pl": "pl/Funkcje_obs\u0142ugi_protoko\u0142\u00f3w_przez_aplikacje_internetowe" } ) }}