# Buenas prácticas

{% hint style="warning" %}
**Importante**

Se deberá hacer uso de control de excepciones con try/catch. Las excepciones no controladas podrían inhabilitar el player HTML5 en alguna de sus funciones. Si se produjeran errores que puedan perjudicar la normal ejecución del player, Admira no se haría responsable de las consecuencias.&#x20;
{% endhint %}

### Iframe

La ejecución de contenidos o WebApps se produce dentro de un TAG HTML \<iframe> sandboxed. Este iframe sandbox contiene los siguientes permisos habilitados:&#x20;

* *allow-forms Re-enables form submission*
* *allow-pointer-lock Re-enables APIs*
* *allow-same-origin Allows the iframe content to be treated as being from the same origin*
* *allow-scripts Re-enables scripts*

Por contra no están permitidos:

* *top-navigation*; (esto es, solo se puede usar *“\_self”* en target de links)
* *popups*

### Acceso a recursos externos

Cada casuística es diferente. En el caso de querer acceder a recursos de otros “sites”, se deberán tener en cuenta las políticas de ejecución desde un \<iframe>. Esto significa que opciones como *X-Frame-Options* o *CORS* deben ser seteadas correctamente en el servidor al que queramos hacer la petición. En definitiva, las WebApps que queramos correr en admira \<iframe> no se ejecutan como en un navegador, sino en una “ventana desatendida”.&#x20;

### Peticiones ASYNC

Es importante remarcar que cualquier petición que se haga ya sea al exterior (url en internet) o de forma local (fichero en filesystem) debe hacerse de forma ASYNCRONA, ya que el contenido HTML comparte HILO de ejecución con el player. Por tanto, si se diera el caso de una petición SYNC, el player pararía hasta que la petición finalizara. Esto puede provocar problemas graves en la ejecución de player. Por tanto, TODAS las peticiones deben hacerse de modo ASYNCRONO, de igual modo que cualquier ejecución de código bloqueante SYNCRONO debe evitarse para que no provoque una parada inusual al player.

En esta web podemos simular bloqueos de peticiones:

<http://slowwly.robertomurray.co.uk/delay/3000/url/http://api.admira.com>

Donde 3000 es el delay en miliseconds.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.admira.com/contenidos/contenidos-html/buenas-practicas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
