recursal/MDN huggingface dataset:
HTMLFormElement: submit event
=============================

O evento **`submit`** é disparado quando é feita a submissão de um `<form>` (en-US).

|  |  |
| --- | --- |
| Bubbles | Sim (apesar de especificado como um evento simples que não borbulha) |
| Cancelável | Sim |
| Interface | `SubmitEvent` (en-US) |
| Propriedade para manipular o evento | `GlobalEventHandlers.onsubmit` (en-US) |

É importante notar que o evento `submit` é disparado no próprio elemento `<form>`, e não em um `<button>` ou <input type="submit"> (en-US) dentro dele. No entanto, o evento `SubmitEvent` (en-US) enviado para indicar a ação possui uma propriedade `submitter` (en-US), que é o botão que realizou o pedido de submit.

O evento `submit` é disparado quando a pessoa usuária clica em um botão (`<button>` ou <input type="submit"> (en-US)) ou pressiona `Enter` enquanto está editando um campo (p. ex. <input type="text"> (en-US)) em um formulário. O evento não é enviado ao formulário quando se chama o método `form.submit()` (en-US) diretamente.

**Nota:** Tentar submeter um formulário que não passa na validação dispara um evento `invalid` (en-US). Nesse caso, a validação previne a submissão do formulário, impedindo que seja disparado o evento `submit`.

Exemplos
--------

Este exemplo usa `EventTarget.addEventListener()` para escutar por um submit do formulário, e escreve o `Event.timeStamp` (en-US) do momento em que ele é disparado. Após isso, previne a ação padrão de submeter o formulário utilizando `Event.preventDefault()`.

### HTML


```html
<form id="form">
  <label>Campo de teste: <input type="text" /></label>
  <br /><br />
  <button type="submit">Submeter formulário</button>
</form>
<p id="log"></p>
```

### JavaScript


```js
function logSubmit(event) {
  log.textContent = `Formulário Submetido! Time stamp: ${event.timeStamp}`;
  event.preventDefault();
}

const form = document.getElementById("form");
const log = document.getElementById("log");
form.addEventListener("submit", logSubmit);
```

### Resultado

Especificações
--------------

| Specification |
| --- |
| HTML Standard # event-submit |
| HTML Standard # handler-onsubmit |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ver também
----------

* Elemento HTML: `<form>` (en-US)
* Evento relacionado: `invalid` (en-US)
SubtleCrypto.importKey()
========================

O método **`SubtleCrypto.importKey()`** retorna como `Promise` de uma `CryptoKey` de uma informção dada como parâmetro.

Sintaxe
-------
```

var result = crypto.subtle.importKey(format, keyData, algo, extractable, usages);
```

### Parâmetros

* *`format`* é um valor enumerado descrevendo o formato de informação da key exportada. Podendo ser um dos seguintes:
    + `"raw"`, a key como um conjunto de bytes, normalmente uma key secreta.
    + `"pkcs8"` uma key privada, no IETF Public Key-Cryptographic Standard Encryption #8.
    + `"spki"`, normalmente uma key pública, no Simple public key infrastructure padrão.
    + `"jwk"`, a key no formato JSON Web Key.
* `keyData` é uma `ArrayBuffer` ou uma `JSONWebKey` contendo uma key no formato dado.
* `algo` é um objeto de dicionário que define o algoritmo que foi utilizado para gerar a key que está sendo importada.
* `extractable` é um `Boolean` indicando se a key pode ser extraída de um objeto `CryptoKey` em um estágio mais tardio.
* `usages` é um `Array` que indica o que pode ser feito com a key. Valores possíveis do array são:
    + `"encrypt"`, permitindo que a key seja utilizada para encrypting (en-US) mensagens.
    + `"decrypt"`, permitindo que a key seja utilizada para decrypting (en-US) mensagens.
    + `"sign"`, permitindo que a key seja utilizada para signing (en-US) mensagens.
    + `"verify"`, permitindo que a key seja utilizada para verifying the signature de mensagens.
    + `"deriveKey"`, permitindo que a key seja utilizada como uma key base na derivação de uma nova key.
    + `"deriveBits"`, permitindo que a key seja utilizada como key base na derivação de bits de informação para uso em criptografias primitivas.
    + `"wrapKey"`, permitindo que a key envolva uma key simétrica para uso (transferência, armazenamento) em ambientes não seguros.
    + `"unwrapKey"`, permitindo que a key se desvincule de uma key simétrica para uso (transferência, armazenamento) em ambientes não seguros.
### Valor de retorno

* `result` é uma `Promise` que retorna a `CryptoKey` gerada.
### Exceções

A promise é rejeitada quando umas das seguintes exceções é encontrada:

* `SyntaxError` (en-US) quando `keyUsages` está vazia mas a key desvinculada é do tipo `"secret"` ou `"private"`.
* `TypeError` quando tentando utilizar um formato invalido ou se a `keyData` não é adequada para este formato.
Especificações
--------------

| Specification |
| --- |
| Web Cryptography API # SubtleCrypto-method-importKey |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `Crypto` e `Crypto.subtle`.
* `SubtleCrypto`, a interface a qual ele pertence.
### Dicionário

"Key" = "Chave"
SubtleCrypto.generateKey()
==========================

O método **`SubtleCrypto.generateKey()`** retorna como `Promise` de uma recentemente gerada `CryptoKey`, para algoritmos simétricos, ou uma `CryptoKeyPair` (en-US), contendo duas keys recentemente geradas, para algoritmos assimétricos, que combina com o algoritmo, o uso e a extractividade são dados como parâmetro.

Sintaxe
-------
```

var result = crypto.subtle.generateKey(algo, extractable, keyUsages);
```

### Parâmetros

* *`algo`* é um objeto do dicionário definindo a função utilizada da geração da key. algo suportados são : AES-CBC (en-US), `AES-CTR`, `AES-GCM`, `RSA-OAEP`, `AES-KW`, `HMAC`, `RSASSA-PKCS1-v1_5`, `ECDSA`, `ECDH`, e `DH`. Os formatos de objetos do dicionário são:
    + `"name"`, o qual corresponde com um dos algo's suportados listados acima,
    + `"modulusLength"`, o qual corresponde com o número de dígitos usado nos módulos
    + `"publicExponent`", uma `Uint8Array` (en-US) representando o exponencial público
    + `"hash"`, um objeto do dicionário referenciando o uso do algoritmo hash. Por exemplo:
        - `{name: "SHA-512"}`
* `extractable` é um `Boolean` indicando se a key pode ser extraída do objeto `CryptoKey` em um estágio mais tardio.
* `keyUsages` é uma `Array` indicando o que pode ser feito com uma key recentemente gerada. Os possíveis valores da array são:
    + `"encrypt"`, permitindo que a key seja utilizada para encrypting (en-US) mensagens.
    + `"decrypt"`, permitindo que a key seja utilizada para decrypting (en-US) mensagens.
    + `"sign"`, permitindo que a key seja utilizada para signing (en-US) mensagens.
    + `"verify"`, permitindo que a key seja utilizada para verifying the signature de mensagens.
    + `"deriveKey"`, permitindo que a key seja utilizada como uma key base para quando se derivando uma nova key.
    + `"deriveBits"`, permitindo que a key seja utilizada como uma key base quando se derivando bits de dados para uso em criptografias primitivas.
    + `"wrapKey"`, permitindo que a key envolva uma chave simétrica para uso (transferência, armazenamento) em ambientes não seguros.
    + `"unwrapKey"`, permitindo que a key se desvincule de uma chave simétrica para uso (transferência, armazenamento) em ambientes não seguros.
### Valor de retorno

* `result` é uma `Promise` que retorna uma key gerada como uma `CryptoKey` ou uma `CryptoKeyPair` (en-US).
### Exceções

A `Promise` é rejeitada quando a seguinte exceção é encontrada:

* `SyntaxError` (en-US) quando `keyUsages` está vazia mas a key gerada simetricamente é do tipo `"secret"` ou `"private"` ou o componente privado gerado do par de key assimétrica está vazio.
Especificações
--------------

| Specification |
| --- |
| Web Cryptography API # SubtleCrypto-method-generateKey |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `Crypto` e `Crypto.subtle`.
* `SubtleCrypto`, a interface a qual ele pertence.
### Dicionário

"Key" = "Chave"
Navigator.battery
=================

Resumo
------

O objeto `battery` fornece informações sobre o nível de carga da bateria do sistema; você pode também escutar eventos enviados por ele que fornecem atualizações sobre o status atual da carga. Isso implementa a Battery Status API; consulte essa documentação para mais detalhes, um guia de utilização da API e códigos de exemplo.

Sintaxe
-------
```

var battery = window.navigator.battery;
```

Valor
-----

`navigator.battery` é um objeto do tipo `BatteryManager`.

Especificações
--------------

{{page("/pt-BR/docs/Web/API/BatteryManager","Specifications")}}Compatibilidade com navegadores
-------------------------------

{{page("/pt-BR/docs/Web/API/BatteryManager","Browser\_compatibility")}}Veja também
-----------

* `BatteryManager`
* the Battery Status API article
* Blog post - Using the Battery API
* David Walsh on the JavaScript Battery Api
* battery.js - a tiny cross-browser wrapper
Navigator.geolocation
=====================

A propriedade de apenas leitura **`Navigator.geolocation`** retorna um objeto `Geolocation` que disponibiliza acesso de conteúdo Web à localização do dispositivo. Isso permite que um Web site ou aplicativo ofereçam resultados customizados baseado na localização do usuário.

**Nota:** Por questão de segurança, quando uma página web tenta acessar as informações de localização, o usuário é notificado e lhe é perguntado se este garante permissão. Esteja alerta que cada navegador possui suas próprias políticas e métodos para requisitar permissão.

Sintaxe
-------
```

geo = navigator.geolocation
```

Especificações
--------------

| Specification |
| --- |
| Geolocation API # dom-navigator-geolocation |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também

* Utilizar geolocalização (en-US)
Navigator.share()
=================

**Secure context:** This feature is available only in secure contexts (en-US) (HTTPS), in some or all supporting browsers.

O método **`navigator.share()`** da API de compartilhamento da Web chama o mecanismo de compartilhamento nativo do dispositivo.

Sintaxe
-------
```

var sharePromise = navigator.share(data);
```

### Parâmetros

`data`

Um objeto que contém dados para compartilhar. Pelo menos um dos seguintes campos deve ser especificado. As opções disponíveis são:

* `url`: Um `USVString` (en-US) representando uma URL a ser compartilhada.
* `text`: Um `USVString` (en-US) representando texto a ser compartilhado.
* `title`: Um `USVString` (en-US) representando o título a ser compartilhado.

### Valor de retorno

Um `Promise` (en-US) que será cumprido assim que um usuário concluir uma ação de compartilhamento (geralmente o usuário escolheu um aplicativo para compartilhar). Ele rejeitará imediatamente se o parâmetro de dados não estiver especificado corretamente e também rejeitará se o usuário cancelar o compartilhamento.

Exemplos
--------

Em nosso teste de compartilhamento na Web (consulte o código-fonte), há um botão que, quando clicado, invoca a API de compartilhamento na Web para compartilhar o URL da MDN. O JavaScript fica assim:


```js
const shareData = {
  title: "MDN",
  text: "Aprenda desenvolvimento web no MDN!",
  url: "https://developer.mozilla.org",
};

const btn = document.querySelector("button");
const resultPara = document.querySelector(".result");

// Deve ser acionado algum tipo de "ativação do usuário"
btn.addEventListener("click", async () => {
  try {
    await navigator.share(shareData);
  } catch (err) {
    resultPara.textContent = "Error: " + e;
  }
  resultPara.textContent = "MDN compartilhado com sucesso!";
});
```

Especificações
--------------

| Specification |
| --- |
| Web Share API # share-method |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `navigator.canShare()` (en-US)
Navigator.deviceMemory
======================

**Experimental:** **Esta é uma tecnologia experimental (en-US)**  
Verifique a tabela de compatibilidade entre Navegadores cuidadosamente antes de usar essa funcionalidade em produção.

A propriedade de somente-leitura **`deviceMemory`** da interface `navigator` (en-US) retorna a quantidade de memória do dispositivo em gigabytes. Este valor é uma aproximação por arredondamento da potência mais próxima de 2 e dividindo este número por 1024.

Sintaxe
-------
```

var memory = navigator.deviceMemory
```

### Valor

Um número de ponto flutuante.

Especificações
--------------

| Specification |
| --- |
| Device Memory # sec-device-memory-js-api |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Navigator.cookieEnabled
=======================

`navigator.cookieEnabled` retorna um valor *Booleano* que indica quando *cookies* estão habilitados ou não. A propriedade é de apenas leitura.

Sintaxe
-------


```js
var cookieEnabled = navigator.cookieEnabled;
```


* `cookieEnabled` é um Booleano: `true` ou `false`.
Exemplo
-------


```js
if (!navigator.cookieEnabled) {
  // The browser does not support or is blocking cookies from being set.
}
```

Especificações
--------------

| Specification |
| --- |
| HTML Standard # dom-navigator-cookieenabled-dev |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Navigation Timing
=================

A **API Navigation Timing** fornece dados que podem ser usados para medir a performance de um website. Diferente de outros mecanismos baseados em Javascript que já foram usados para o mesmo propósito, esta API pode fornecer dados sobre a latência do começo ao fim que podem ser mais precisas e relevantes.

O exemplo a seguir mostra como você pode medir o tempo de carregamento percebido:
```

function onLoad() {
  var now = new Date().getTime();
  var page_load_time = now - performance.timing.navigationStart;
  console.log("Tempo de carregamento percebido pelo usuário: " + page_load_time);
}
```


Existem muitos eventos medidos em milisegundos que podem ser acessados através da interface `PerformanceTiming` (en-US) interface. A lista de eventos na ordem em que ocorrem são:

* navigationStart
* unloadEventStart
* unloadEventEnd
* redirectStart
* redirectEnd
* fetchStart
* domainLookupStart
* domainLookupEnd
* connectStart
* connectEnd
* secureConnectionStart
* requestStart
* responseStart
* responseEnd
* domLoading
* domInteractive
* domContentLoadedEventStart
* domContentLoadedEventEnd
* domComplete
* loadEventStart
* loadEventEnd

O objeto `window.performance.navigation` guarda dois atributos que podem ser usados para saber se o carregamento da página é iniciada por um redirecionamento, pelo botão voltar/avançar ou pela URL mesmo.

window.performance.navigation.type:

| Constante | Valor | Descrição |
| --- | --- | --- |
| `TYPE_NAVIGATENEXT` | 0 | Navegação iniciada pelo clique em um link, ou pela entrada da URL na barra de endereços, ou envio de formulário, ou inicializada através da operação de um script diferente que os usados por TYPE\_RELOAD e TYPE\_BACK\_FORWARD como listado abaixo. |
| `TYPE_RELOAD` | 1 | Navegação através da operação de recarregamento ou pelo método location.reload(). |
| `TYPE_BACK_FORWARD` | 2 | Navegação através de uma operação de histórico. |
| `TYPE_UNDEFINED` | 255 | Qualquer tipo de navegação não definida pelos valores acima. |

`window.performance.navigation.redirectCount` indicará, se houver, quantos redirecionamentos aconteceram até que a página final seja alcançada.

A API Navigation Timing pode ser usada para colher dados da performance do lado do cliente enviado para um servidor via XHR tanto quanto os dados medidos que eram muito dificultosos de medir de outras maneiras como o tempo de "descarga" de uma página anterior, tempo de look up do dominio, tempo total do window.onload total time, etc.

Exemplos
--------

Calculando o tempo total necessário para carregar uma página:
```

var perfData = window.performance.timing;
var pageLoadTime = perfData.loadEventEnd - perfData.navigationStart;
```


Calculando os tempos de resposta da requisição:
```

var connectTime = perfData.responseEnd - perfData.requestStart;
```

### Links

* Test Page
* http://w3c-test.org/webperf/specs/NavigationTiming/
* https://www.w3.org/TR/navigation-timing/
Compatibillidade de Navegadores
-------------------------------

{{Compat}}
FormData.set()
==============

O método **`set()`** da interface `FormData` adiciona o novo valor para um chave existente em um objeto `FormData`, ou adicionar a combinação chave/valor caso ela não exista.

A diferença entre `set()` e `FormData.append` é que, se a chave especificada já existir, `set()` irá sobrescrever todos os valores existentes pelo novo valor, enquanto o `FormData.append` apenas acrescenta o novo valor ao conjunto de valores existentes.

**Nota:** Esse método está disponível em Web Workers.

Sintaxe
-------

Existem duas versões desse método: uma com dois e outra com três parâmetros:


```js
formData.set(name, value);
formData.set(name, value, filename);
```


#### Parâmetros

`name`

O nome do campo cujo dado está em `value`.

`value`

O valor do campo. Na versão de dois parâmetros, esse é um `USVString` (en-US), e caso não seja, ele é convertido para uma string. Na versão de três parâmetros ele pode ser um {domxref("Blob")}}, `File`, ou um `USVString` (en-US). Se nenhum desses valores forem especificados, o valor será convertido para string.

`filename` Optional

O nome do arquivo a ser enviado (um `USVString` (en-US)), quando um `Blob` ou um `File` é passdo como o segundo parâmetro. O nome de arquivo padrão para objetos do tipo `Blob` é "blob".


**Nota:** Se você especificar um `Blob` como o dado a ser acrescentado ao objeto `FormData`, o nome do arquivo que será enviado para o servidor, enviado no atributo "Content-Disposition" no cabeçalho varia de navegador para navegador.

Exemplo
-------

A linha a seguir cria um objeto `FormData` vazio:


```js
var formData = new FormData(); // Currently empty
```


Você pode adicionar os pares chave/valor usando (domxref("FormData.set")}}:


```js
formData.set("username", "Chris");
formData.set("userpic", myFileInput.files[0], "chris.jpg");
```

Especificações
--------------

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-set |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ver também
----------

* `XMLHTTPRequest`
* Usando XMLHttpRequest (en-US)
* Usando objetos FormData (en-US)
* `<form>` (en-US)
FormData()
==========

O **`FormData()`** construtor cria um novo objeto `FormData`.

**Nota:** Este recurso está disponível em Web Workers.

Sintaxe
-------


```js
var formData = new FormData(form);
```

### Parâmetros

`form` Optional

Um elemento HTML `<form>` (en-US) — quando especifico, o objeto `FormData` será preenchido com as chaves/valores atuais do formulário usando a propriedade *name* de cada elemento para as chaves e seu valor enviado para os valores. Também condificará conteúdo de entrada do arquivo.

Exemplo
-------

A linha a seguir cria um objeto FormData vázio:


```js
var formData = new FormData(); // Currently empty
```


Você poderia adicionar uma chave/valor usando `FormData.append`:


```js
formData.append("username", "Chris");
```


Ou você pode especificicar o opcional `form` argument ao criar o objeto `FormData`, para o popular com valores de forma especifica:


```html
<form id="myForm" name="myForm">
  <div>
    <label for="username">Enter name:</label>
    <input type="text" id="username" name="username" />
  </div>
  <div>
    <label for="useracc">Enter account number:</label>
    <input type="text" id="useracc" name="useracc" />
  </div>
  <div>
    <label for="userfile">Upload file:</label>
    <input type="file" id="userfile" name="userfile" />
  </div>
  <input type="submit" value="Submit!" />
</form>
```


**Nota:** Todos os elementos de entrada têm um atributo 'name'. Para que possa acessar seus valores mais tarde.


```js
var myForm = document.getElementById("myForm");
formData = new FormData(myForm);
```

Especificações
--------------

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `XMLHTTPRequest`
* Using XMLHttpRequest (en-US)
* Using FormData objects (en-US)
* `<form>` (en-US)
FormData.append()
=================

O método **`append()`** da Interface `FormData` adiciona um novo valor dentro de uma chave existente dentro do objeto `FormData` ou adiciona a chave caso ainda não exista.

A diferença entre `FormData.set` e `append()` é que se uma chave específica já exista, `FormData.set` irá substituir o valor existente com um novo valor, já o `append()` irá adicionar um novo valor no fim do conjunto de valores.

**Nota:** Este metodo esta desponivel no Web Workers.

Sintaxe
-------

Existe duas versoes deste metodo: um de dois e um outro de tres:


```js
formData.append(name, value);
formData.append(name, value, filename);
```

### Parametros

`name`

O nome do campo cujos dados estão contidas em value.

`value`

O valor deste campo . Nas duas versões este é a `USVString` (en-US), ou caso não seja , este é convertido em string. Na versão de tres parametros este pode ser `Blob`, `File`, ou `USVString` (en-US), de novo, caso nenhum deses forem especificados este valor é convertido em uma string.

`filename` Optional

O filename reporta para o servidor (a `USVString` (en-US)), quando a `Blob` ou `File` é passado como o segundo parametro. O default filename para `Blob` o objecto é "blob".


**Nota:** Se espisificares `Blob` como a data append para o objecto `FormData` , o filename a ser reportado para o servidor no "Content-Disposition" header usado para mudar de browser em browser.

### Retorna

Void.

Exemplo
-------

As seguintes linhas criam um Objecto `FormData` vazio:


```js
var formData = new FormData(); // Corrente vazio
```


Podes adicionar chaves/valores pares para usar (domxref("FormData.append")}}:


```js
formData.append("username", "Chris");
formData.append("userpic", myFileInput.files[0], "chris.jpg");
```

Especificações
--------------

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-append |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja Tambem
-----------

* `XMLHTTPRequest`
* Usando XMLHttpRequest (en-US)
* UsandoFormData objects (en-US)
* `<form>` (en-US)