Salta el contingut

Objectes predefinits del llenguatge

Objectes nadius del llenguatge

JavaScript disposa d'una sèrie d'objectes predefinits i independents del navegador que podem utilitzar en tot moment, entre ells:

Interacció amb el navegador

JavaScript disposa d'una sèrie d'objectes que permeten el control del navegador on s'està executant.

L'objecte Navigator

Conté informació sobre el navegador i la plataforma sobre la que s'està executant el codi JavaScript.

Permet per exemple identificar el tipus i versió del navegador i el sistema operatiu de treball.
Gràcies a això es pot determinar si és necessari prendre alguna decisió que afecti al codi a executar, però cal tenir en compte que és un paràmetre modificable per l'usuari i per tant no sempre serà fiable.

propietat / mètode informació que retorna valor en aquest navegador
navigator.platform sistema operatiu
navigator.userAgent agent d'usuari
navigator.javaEnabled() Java habilitat?

Identificació del navegador

Per raons històriques de compatibilitat, tots els navegadors s'identifiquen com a Mozilla

Navigator (MDN)

L'objecte Screen

Conté informació sobre la pantalla del dispositiu que està utilitzant l'usuari.

És útil per poder adaptar la presentació de l'aplicació a la mida disponible, o per mostrar elements centrats a la pantalla.

propietat informació que retorna valor en aquest navegador
screen.width amplada de la pantalla en píxels
screen.height alçada de la pantalla en píxels
screen.colorDepth profunditat de color bits

Atenció!

La forma recomanada d'adaptar el contingut a la pantalla del dispositiu és utilitzant media queries de CSS.

Screen (MDN)

L'objecte Window

Representa cada finestra oberta del navegador, i si el document conté frames, representa cada frame individual.

Permet obrir i tancar finestres, crear-ne de noves, moure-les i canviar-ne la mida, etc.
També és l'objecte que gestiona els esdeveniments de temporització, que permeten executar codi donat un període de temps.

Utilitat

La variable global window està exposada al codi per defecte, per tant no cal escriue window. davant de cada propietat o mètode d'aquest objecte.
Per exemple, és el mateix utilitzar window.innerWidth que directament innerWidth.

Algunes propietats de window a tenir en compte són:

propietat informació que retorna valor en aquest navegador
innerWidth Amplada interior de la finestra actual en píxels
innerHeight Alçada interior de la finestra actual en píxels
outerWidth Amplada exterior de la finestra actual en píxels, comptant menús i barres laterals
outerHeight Alçada exterior de la finestra actual en píxels, comptant menú superior, barra d'estat, etc.
scrollX Desplaçament horitzontal de la finestra en píxels (només lectura)
scrollY Desplaçament vertical de la finestra en píxels (només lectura)

Animacions lligades al desplaçament de la finestra

Pàgines amb exemples basats en la posició de scroll

Demo de "scroll.js"
Web d'Apple Mac Studio

L'objecte window també dona accés a l'emmagatzematge local a través de l'objecte Storage i les seves propietats localStorage i sessionStorage, que veurem més endavant.

Alguns mètodes de window a tenir en compte són:

mètode funció que realitza exemple
alert() Obre una finestra emergent amb un missatge Prova-ho
confirm() Obre una finestra emergent que demana confirmació a un missatge i retorna un booleà en funció de la resposta de l'usuari Prova-ho
prompt() Obre una finestra emergent amb un missatge que retorna la cadena introduida per l'usuari Prova-ho
print() Obre el diàleg d'impressió per la pàgina actual Prova-ho
scroll() Desplaça la finestra a una posició donada Prova-ho

Funcions de temporització

Tots són mètodes de l'objecte window.

setInterval()
Executa indefinidament una funció cada interval de mil·lisegons donat

function missatge() {
    console.log("Ha passat un segon");
}

// S'executarem la funció missatge cada segon indefinidament
let intervalMissatge = setInterval( missatge, 1000);

clearInterval()
Cancel·la un setInterval() en progrés, sempre que l'haguem assignat a una variable:

clearInterval(intervalMissatge);

setTimeout()
Executa una sola vegada una funció després d'un nombre de mil·lisegons donat

function missatge() {
    alert("Han passat cinc segons");
}

// S'executarem la funció missatge un sol cop després de 5 segons
let intervalMissatge = setTimeout( missatge, 5000);

clearTimeout()
Cancel·la un setTimeout() en progrés, sempre que l'haguem assignat a una variable:

clearTimeout(intervalMissatge);

Els mètodes setInterval i setTimeout són intercanviables:

function missatge() {
    /// ...
    let temps = 1000;
    setTimeout(missatge, temps);
}

// setTimeout funcionant com un setInterval,
// es reinicia cada cop que acaba el temps
setTimeout(missatge, 1000);

Avantatge

La variable temps podria tenir diferents valor en funció de condicions del codi.

function missatge() {
    /// ...
    if (condicioFinal) clearInterval(interval);
}

// setInterval funcionant com un setTimeout,
// la funció determina si continua o l'aturem
let interval = setInterval(missatge, 1000);

Avantatge

Podem aturar el comptador en funció de condicions del codi cada cop que s'executa la funció.

Important

Els intervals de temps d'aquests dos mètodes no són exactes, ja que estan en funció del temps que necessiti la funció que es crida per executar-se. Si el temps necessari per executar la funció és major que l'interval de repetició establert, s'anirà acumulant un error de temps a cada execució.
Si necessitem comptar temps exactes és millor utilitzar l'objecte Date.

Error acumulat de setInterval

Window (MDN)

Rellotge digital

L'objecte Document

Representa tot el contingut del document actual, on cada element és representat com un node que forma part del model d'objectes del document (DOM)

Conté subobjectes que representen els diferents tipus d'elements d'un document: formularis, enllaços, imatges, etc. i té propietats i mètodes per manipular qualsevol element del document (getElementById, write, etc.)

El veurem amb més detall més endavant.

Generació de codi amb innerHTML

Referència

Document (MDN)

L'objecte History

Conté l'historial del navegador per la finestra o pestanya activa.

Per protegir la privacitat dels usuaris, no permet conèixer la URL de les adreces individuals, sinó només desplaçar-se per la llista i saber-ne la mida.
S'utilitza principalment per poder recular una pàgina en el navegador sense necessitat d'especificar una adreça de destinació concreta.

propietat / mètode resultat
history.length número d'elements a l'historial
history.back() navegar a la pàgina anterior
history.forward() navegar a la pàgina següent
history.go( -n ) navegar n pàgines enrere

History (MDN)

L'objecte Location

Conté informació sobre la URL actual, i en pot extreure parts concretes com el domini, protocol o port.

Permet també recarregar la pàgina actual o carregar una pàgina nova.

propietat / mètode informació que retorna valor en aquest navegador
location.href URL completa de la pàgina actual
location.protocol Protocol que utilitza la URL
location.host Nom del servidor i port
location.hostname Domini de la URL
location.port Port la de URL, si en forma part
location.pathname Part corresponent a la ruta de la URL
location.search Paràmetres de la URL si n'hi ha, incloent el ?
location.hash Marcador dins la pàgina, incloent el #
location.reload() Recarrega la pàgina actual Recarrega
location.assign(url) Carrega la url indicada Carrega URL
location.replace(url) Carrega la url subtituint l'actual a l'historial de navegació Reemplaça URL

Propietat útil!

Si modifiquem el valor de location.href el document carregarà la nova pàgina.
D'aquesta manera podem aconseguir el mateix comportament que en clicar un enllaç, però des de codi JavaScript i sense interacció per part de l'usuari.

Location (MDN)