Apuntes de Javascript
Cabecera
El archivo .html debe hacer referencia al script .js y esto se logra añadiendo a la cabecera del .html esta línea:
<script type="text/javascript" src="archivo.js"></script>
Funciones útiles
Ejecutar tras la carga del DOM
document.addEventListener('DOMContentLoaded', function(){
// Tu código aquí
}, false);
Detener el hilo de ejecución por un tiempo
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function myFunción(){
await sleep(100);
}
SVG
La librería Svg completa
Crear el objetoContenedor del lienzo en el html será
<svg id="canvas1" width="800px" height="500px">
// Ejemplo para crear el lienzo en <em>javascript</em>
async function main(){
s = new Svg("canvas1", 800, 500);
s.drawAxis();
s.drawGrid();
}
Dibujar objetos en el lienzo
// Prototipos de métodos de la clase Svg
addCircle(circleId, cx, cy, r, fillColor, strokeWidth = 0, strokeColor = null);
addLine(lineId, x0, y0, x1, y1, color, width);
En este ejemplo se crea un punto llamado p1 en las
coordenadas x, y de radio 4 y de color rojo
s.addCircle("p1", x, y, 4, "red");
Mover dos puntos asincrónicamente. Uno se moverá en círculos y el otro en línea recta
var o1, o2;
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function mover1(){
for(var i=0; i<200; i+=0.1){
var p = 50*Math.sin(i/10.0);
o1.setAttribute("cx", s.px(50*Math.cos(i/10.0)));
o1.setAttribute("cy", s.py(50*Math.sin(i/10.)));
await sleep(1);
console.log("1");
}
}
async function mover2(){
for(var i=0; i<100; i++){
console.log("2");
o2.setAttribute("cx", s.px(-i));
await sleep(100);
console.log("2");
}
}
document.addEventListener('DOMContentLoaded', function(){
s = new Svg("canvas1", 800, 500);
s.drawAxis();
s.drawGrid();
o1 = s.addCircle("c1", 0, 0, 5, "red");
o2 = s.addCircle("c2", 0, 0, 5, "blue");
mover1();
mover2();
}, false);
Enviar post mediante ajax
Creamos dos ficheros, una será un .html en el cliente y un .php en el servidor.
Cliente
<!-- Cliente HTML -->
<!DOCTYPE html>
<html>
<head>
</head>
<script>
document.addEventListener('DOMContentLoaded', function(){
document.getElementById("b").addEventListener("click", function(){
let obj_post = {
nombre: document.getElementById("campo1").value,
apellido: document.getElementById("campo2").value
}
let xhr = new XMLHttpRequest();
xhr.open("POST", "http://192.168.1.118:8080/ajax_post.php");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(obj_post));
});
}, false);
</script>
<body>
<form>
<input id="campo1" type="text" value="Ambrosio">
<input id="campo2" type="text" value="Benavente">
<input id="btn" type="button" value="Enviar">
</form>
</body>
</html>
Servidor
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: content-type');
header('Access-Control-Allow-Methods: POST');
$json = file_get_contents('php://input');
$data = json_decode($json);
if (isset($json)){
# El script será llamado varias veces:
# Primera vez: obtener cabeceras, $json == null
# Segunda vez: $json is set
error_log(print_r($data, true));
}