alexbm8_practica3_ej_T1_8

code format="javascript" // ==UserScript== // @name               AAP-Nav-Ej // @namespace          http://geneura.org/projects/greasemonkey // @description        Navegaciï¿½n por los ejercicios de AP // @include             http://geneura.ugr.es/~jmerelo/asignaturas/* // ==/UserScript==

GM_log('Entrando AAP-Nav-Ej'); // Obtenemos todos los títulos de los ejercicios, que se encuentran entre etiquetas var h3 = document.getElementsByTagName('h3'); var a_nodes = new Array; var anchors = new Array;

// No todos los son ejercicios, con esta variable contaremos el nº exacto de ellos var contador = 0;

for ( var secs = 0; secs < h3.length; secs ++ ) { // Obtenemos el identificador del nodo padre, así podemos diferenciar los distintos bloques var id = h3[secs].parentNode.getAttribute('id'); // Creamos un ancla para poder navegar entre bloques var ancla = document.createElement('a'); // Le asignamos un identificador ancla.setAttribute('name', id); // Añadimos el ancla creado al vector de anclas a_nodes[secs] = ancla; // Igual con su identificador anchors[secs] = id; // Insertamos el ancla ”ancla” justo antes del título del ejercicio h3[secs].parentNode.insertBefore(ancla, h3[secs]); // Mostramos un mensaje por la consola de Greasemonkey GM_log('Anchor ' + secs + " " + anchors[secs]);

if (id != null) contador++; }

// Recorremos todo el vector de ejercicios for ( secs = 0; secs < h3.length; secs ++ ) {

if (h3[secs].parentNode.getAttribute('id') != null){ // Creamos un span donde insertaremos el texto con los enlaces var span = document.createElement('span'); // Atributos del span span.setAttribute('style','background:lightblue');

// Creamos un segundo span para acceder al primer y último bloque de ejercicios var span2 = document.createElement('span'); span2.setAttribute('style','background:lightgreen');

// Crearemos un enlace con el ejercicio anterior if ( secs > 0 ) { // Creamos una etiqueta  donde insertaremos el enlace var ahref = document.createElement('a'); // Definimos el enlace ahref.setAttribute('href','#'+anchors[secs-1]); // Creamos el texto donde pinchar para ir al enlace var txt=document.createTextNode('Anterior'); // Añadimos al enlace el texto creado ahref.appendChild(txt); // Añadimos al span el enlace completo span.appendChild(ahref);

// Enlazamos con el primer bloque de ejercicios var primero = document.createElement('a'); primero.setAttribute('href','#'+anchors[0]); var txt_first=document.createTextNode('Primero'); primero.appendChild(txt_first); span2.appendChild(primero); }     // Hacemos lo mismo pero enlazando con el ejercicio siguiente if ( secs < h3.length -1 ) { span.appendChild(document.createTextNode(' | ')); ahref = document.createElement('a'); ahref.setAttribute('href','#'+anchors[secs+1]); txt=document.createTextNode('Siguiente'); ahref.appendChild(txt); span.appendChild(ahref);

// Enlazamos con el último bloque de ejercicios span2.appendChild(document.createTextNode(' | ')); var ultimo = document.createElement('a'); ultimo.setAttribute('href','#'+anchors[contador-1]); var txt_last=document.createTextNode('Último'); ultimo.appendChild(txt_last); span2.appendChild(ultimo); }       // Insertamos el span con el enlace justo antes del ancla creado para este ejercicio h3[secs].parentNode.insertBefore(span,a_nodes[secs]); // Los nuevos enlaces los insertaremos al final del div h3[secs].parentNode.appendChild(span2); } }

code