<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Objectes_predefinits_i_nadius_del_llenguatge</id>
	<title>Objectes predefinits i nadius del llenguatge - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Objectes_predefinits_i_nadius_del_llenguatge"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Objectes_predefinits_i_nadius_del_llenguatge&amp;action=history"/>
	<updated>2026-08-30T08:44:59Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Objectes_predefinits_i_nadius_del_llenguatge&amp;diff=257739&amp;oldid=prev</id>
		<title>Joan: /* Entrega */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Objectes_predefinits_i_nadius_del_llenguatge&amp;diff=257739&amp;oldid=prev"/>
		<updated>2018-09-19T16:17:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Entrega&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
A Javascript tenim objectes predefinits relacionats amb la finestra i l'entorn del navegador, que has de conèixer i utilitzar.&lt;br /&gt;
=Referències=&lt;br /&gt;
*http://www.w3schools.com/&lt;br /&gt;
&lt;br /&gt;
*JS Window: http://www.w3schools.com/js/js_window.asp&lt;br /&gt;
*JS Screen: http://www.w3schools.com/js/js_screen.asp&lt;br /&gt;
*JS Location: http://www.w3schools.com/js/js_location.asp&lt;br /&gt;
*JS History: http://www.w3schools.com/js/js_history.asp&lt;br /&gt;
*JS Navigator: http://www.w3schools.com/js/js_navigator.asp&lt;br /&gt;
*JS PopupAlert: http://www.w3schools.com/js/js_popupalert.asp&lt;br /&gt;
*JS Timing: http://www.w3schools.com/js/js_timing.asp&lt;br /&gt;
*JS Cookies: http://www.w3schools.com/js/js_cookies.asp&lt;br /&gt;
*Frames: http://www.w3schools.com/jsref/prop_win_frames.asp&lt;br /&gt;
&lt;br /&gt;
=Desenvolupament=&lt;br /&gt;
Els alumnes provaran amb l'ordre proposat algun dels exemples que s'han explicat a classe, i es faran provatures per tal de consolidar els coneixements.&lt;br /&gt;
==iFrames==&lt;br /&gt;
Un iframe s'utilitza per visualitzar una pàgina web dins d'una altra.&lt;br /&gt;
*http://www.w3schools.com/jsref/prop_win_frames.asp&lt;br /&gt;
*http://www.w3schools.com/html/html_iframe.asp&lt;br /&gt;
*http://www.w3schools.com/jsref/dom_obj_frame.asp&lt;br /&gt;
&lt;br /&gt;
Exemple pràctica de '''iframe''', amb la problemàtica de l'atribut '''seamless''', fitxer ''iframe.htm'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
	&amp;lt;meta http-equiv=&amp;quot;Content-type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;HTML5 iframe&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;style&amp;gt;&lt;br /&gt;
		iframe[seamless]{&lt;br /&gt;
			 background-color: transparent;&lt;br /&gt;
			 border: 0px none transparent;&lt;br /&gt;
			 padding: 0px;&lt;br /&gt;
			 overflow: hidden;&lt;br /&gt;
		}&lt;br /&gt;
	&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Prova iFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Prova de l'atribut &amp;lt;em&amp;gt;seamless&amp;lt;/em&amp;gt; del tag iframe del HTML5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
L'atribut &amp;lt;em&amp;gt;seamless&amp;lt;/em&amp;gt; encara no funciona correctament en la majoria dels navegadors. És per això que en aquest &amp;lt;a href=&amp;quot;http://stackoverflow.com/questions/4804604/html5-iframe-seamless-attribute&amp;quot;&amp;gt;link&amp;lt;/a&amp;gt; es proposa utilitzar CSS per tal d'eliminar els contorns i els scroll bars i fer un &amp;lt;em&amp;gt;iframe&amp;lt;/em&amp;gt; sense costures.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe title=&amp;quot;w3schools&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;300&amp;quot; src=&amp;quot;http://www.w3schools.com/&amp;quot; seamless=&amp;quot;seamless&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''nota''': sembla ser que www.google.com no es deixa obrir dins d'un iframe.&lt;br /&gt;
==Obrir finestra nova==&lt;br /&gt;
Per defecte per obrir una finestra nova (en una pestanya nova) no cal Javascript, n'hi ha prou amb l'opció target=&amp;quot;_blank&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://www.google.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;kkk&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ara bé, si utilitzem Javascript tenim moltes d'altres opcions, tal com s'explica a &lt;br /&gt;
*http://www.desarrolloweb.com/articulos/18.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.open(URL,nom_de_la_finestra,forma_de_la_finestra) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Concretament podem controlar les mides, la posició, si té scrollbars, barra de direccions, menú,... És la manera correcta de fer els pop-ups:&lt;br /&gt;
==Comunicació entre finestres amb Javascript==&lt;br /&gt;
Està ben explicat en aquest enllaç:&lt;br /&gt;
*http://www.simbiontes.com/archives/codeblog/comunicacion-entre-ventanas-con-javascript.php&lt;br /&gt;
&lt;br /&gt;
==Cookies==&lt;br /&gt;
La manera més fàcil de veure les cookies és des del mateix Firefox:&lt;br /&gt;
*Editar &amp;gt; Preferencias &amp;gt; Privacitat &amp;gt; Suprimir les galetes individualment&lt;br /&gt;
Però les cookies es es guarden en el disc dur. Des de la versió Firefox 3 les cookies no es guarden en un fitxer de text sinó en una petita base de dades ''sqlite''. A la carpeta ''~/.mozilla/firefox/'' veiem que hi ha diferents perfils (fitxer perfils.ini), i cada perfil té una carpeta on es guarden les cookies. Dins de cada perfil, la cookie es guarda en el fitxer '''cookies.sqlite '''&lt;br /&gt;
*http://kb.mozillazine.org/Cookies&lt;br /&gt;
&lt;br /&gt;
Com es pot veure directament la informació de les cookies? Doncs necessitem '''Sqlite''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install sqlite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''NOTA'''. La informació que es troba a la xarxa per accedir a les cookies des d'un client de sqlite és molt equívoca, doncs és molt dependent de la versió del Firefox i del Sqlite. A continuació es documenta com ho ha fet el professor, però no és objectiu de la pràctica accedir a les cookies des de sqlite.&lt;br /&gt;
&lt;br /&gt;
Disposem de la versió del Mozilla Firefox 11. Primer de tot mirem la versió del sqlite que tenim instal.lada: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sqlite3&lt;br /&gt;
SQLite version 3.6.22&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es llegeix en un fòrum de què s'ha de disposar de la versió 3.7, i aquesta versió no està disponible en els repositoris, o sigui que s'haurà de compilar des de les fonts.&lt;br /&gt;
*http://www.sqlite.org/download.html&lt;br /&gt;
Descarrego el fitxer ''sqlite-autoconf-3071401.tar.gz'', i compilem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El binari '''sqlite3''' s'ha creat en el directori ~/Baixades/sqlite-autoconf-3071401/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/Baixades/sqlite-autoconf-3071401/&lt;br /&gt;
$ ./sqlite3 &lt;br /&gt;
SQLite version 3.7.14.1 2012-10-04 19:37:12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ara anem al directori on estan les cookies:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/.mozilla/firefox/mevel791.default&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Veiem que existeix el fitxer '''cookies.sqlite'''. Aquest és el fitxer que conté les cookies, en format de base de dades de sqlite. Des d'aquest directori, executem la versió del sqlite que hem compilat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ~/Baixades/sqlite-autoconf-3071401/sqlite3 cookies.sqlite&lt;br /&gt;
SQLite version 3.7.14.1 2012-10-04 19:37:12&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .databases&lt;br /&gt;
seq  name             file                                                      &lt;br /&gt;
---  ---------------  ----------------------------------------------------------&lt;br /&gt;
0    main             /home/joan/.mozilla/firefox/mevel791.default/cookies.sqlite&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .tables&lt;br /&gt;
moz_cookies&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; select * from moz_cookies;&lt;br /&gt;
...&lt;br /&gt;
1332582384604528|az|44966168997d45eca38607f90f07e56e|engine.adzerk.net|/|1382997774|1351461774433171|0|0|adzerk.net|1348816654853624&lt;br /&gt;
1332582384604529|GMAIL_IMP|v*2%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Ftl-inv*0!inbox!unk%2Fpf-s*8090%2Fbc-se5*1%2Fbc-se6*1%2Fbc-se12*1%2Fcl-rld*3998|mail.google.com|/mail/u/0|1351548946|1351462546083422|0|0|google.com|1351460441549654&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .schema moz_cookies&lt;br /&gt;
CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, name TEXT, value TEXT, host TEXT, path TEXT,expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER, baseDomain TEXT, creationTime INTEGER);&lt;br /&gt;
CREATE INDEX moz_basedomain ON moz_cookies (baseDomain);&lt;br /&gt;
CREATE UNIQUE INDEX moz_uniqueid ON moz_cookies (name, host, path);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .mode column&lt;br /&gt;
sqlite&amp;gt; .headers on&lt;br /&gt;
sqlite&amp;gt; select name,value from moz_cookies where host like '%arthropoda.joanillo.org%';&lt;br /&gt;
name        value     &lt;br /&gt;
----------  ----------&lt;br /&gt;
num_fotos   totes     &lt;br /&gt;
tam_fotos   800       &lt;br /&gt;
language    ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Detecció de smartphone i redirecció==&lt;br /&gt;
Es tracta de detectar que el navegador que estem utilitzant és un smartphone, PDA o similar, i redirigir a una pàgina amb un contingut i disseny adequats. S'ha de pensar en la usabilitat que li donarem a l'aplicació quan accedim des del mòbil (normalment no volem veure el mateix contingut i detall que quan accedim des de l'ordinador). A més, hem de pensar que els mòbils tenen un ample de banda limitat i que els usuaris no volen superar el seu límit contractat, per la qual cosa tindrem cura amb les imatges,... Típicament, s'utilitzarà un full d'estils CSS específic per a aquest format.&lt;br /&gt;
&lt;br /&gt;
La detecció del navegador pot ser simple com l'exemple que es proposa, però es pot complicar si el disseny depèn exactament del tamany de la pantalla (diferents smartphones tenen diferents tamanys). A més, hem de pensar en nous formats de pantalla com ara els iPad i tablets.&lt;br /&gt;
&lt;br /&gt;
En l'exemple que es proposa pots accedir directament a http://arthropoda.joanillo.org/last.php. Si ho fas des d'un mòbil la funcionalitat, el contingut i les imatges queden reduïdes a la mínima expressió.&lt;br /&gt;
*http://arthropoda.joanillo.org/last.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
	var navegador = navigator.userAgent.toLowerCase();&lt;br /&gt;
	//alert(navegador);	&lt;br /&gt;
	if( navegador.search(/iphone|ipod|android/) &amp;gt; -1 ){&lt;br /&gt;
	document.location = 'pda_last.php';&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mira les diferències entre accedir a la pàgina des del portàtil o des del mòbil.&lt;br /&gt;
&lt;br /&gt;
De totes maneres, aquestes tècniques ara ja estan en desús. La idea actual és que el dissenyador ja no s'hagi de preocupar dels navegadors, del tamany de pantalles, etc. El concepte '''responsive design''' fa referència a les tècniques i frameworks per tal de què un mateix contingut es visualitzi de manera correcta en els diferents formats: des d'un ordinador de sobretaula, portàtil, smartphones,... passant per tauletes de diferent tamany.&lt;br /&gt;
&lt;br /&gt;
Per ex, un dels frameworks que s'utilitza és '''bootstrap''', el mateix que utilitza ''Twitter'':&lt;br /&gt;
*http://www.designer-daily.com/5-responsive-frameworks-for-more-productive-web-design-34969&lt;br /&gt;
&lt;br /&gt;
==Exercicis aclaridors==&lt;br /&gt;
===Rellotge Javascript===&lt;br /&gt;
Hem vist un exemple de rellotge analògic fet amb Javascript a:&lt;br /&gt;
*http://www.w3schools.com/js/js_timing.asp&lt;br /&gt;
A classe hem extret la part que ens interessa, i hem comentat el codi. Un dels objectius terminals del mòdul és poder implementar en el nostre projecte codi que hem vist per aquí o per allà, ser capaços d'entendre'l, i adaptar-lo a les nostres necessitats. A vegades fins i tot podrem fer adaptacions de codi que no entenguem al 100%.&lt;br /&gt;
*[[Fitxer:Rellotge.zip]]&lt;br /&gt;
Concretament, en aquest codi podem identificar diverses funcions i tècniques que hem vist a classe: funcions de cadena, matemàtiques, de timing,...&lt;br /&gt;
&lt;br /&gt;
=Entrega=&lt;br /&gt;
Els alumnes entregaran al Google Classroom tots els fitxers generats (fitxers html). S'empaquetaran tots aquests fitxers i es pujaran al Moodle dins del termini d'entrega de la pràctica.&lt;br /&gt;
&lt;br /&gt;
Recorda la '''normativa''' per entregar les pràctiques al Google Classroom: [[ASIX-M10-UF2#Normativa_d.27entrega_de_les_pr.C3.A0ctiques_al_Google_Classroom]]&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, Octubre 2018&lt;br /&gt;
[[Categoria: Institut Jaume Balmes]]&lt;br /&gt;
[[Categoria: Assignatura DAW-M06-WEC]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>