1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
---
title: Manipuladores de protocolo web
slug: Manipuladores_de_protocolo_web
tags:
- Firefox 3
---
<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" } ) }}
|