{"id":858,"date":"2024-07-31T07:50:11","date_gmt":"2024-07-31T05:50:11","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=858"},"modified":"2024-07-31T07:50:11","modified_gmt":"2024-07-31T05:50:11","slug":"001-bom-propiedades-y-eventos","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/javascript\/javascript-practico\/14-bom-browswer-object-model\/001-bom-propiedades-y-eventos\/","title":{"rendered":"001. BOM: Propiedades y Eventos"},"content":{"rendered":"\n<p>En los cap\u00edtulos anteriores estuvimos trabajando el <strong>DOM<\/strong>, todos los conceptos b\u00e1sicos para poder trabajar cualquier tipo de <strong>evento<\/strong>. En los siguientes cap\u00edtulos vamos a ver la parte del <strong>BOM<\/strong> (<strong>Browser Object Model<\/strong>), que es una serie de <strong>m\u00e9todos<\/strong> y <strong>objetos<\/strong> que cuelgan directamente de la <strong>ventana del<\/strong> navegador, es decir, de&nbsp; <strong><em>window<\/em><\/strong>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>En este primer cap\u00edtulo vamos a ver dos propiedades muy importantes, que son <strong><em>innerWidth<\/em><\/strong>, <strong><em>innerHeight<\/em><\/strong>, <strong><em>outerWidth<\/em><\/strong> y <strong><em>outerHeight<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">innerWidth<\/h2>\n\n\n\n<p>Esta propiedad&nbsp; hace referencia al tama\u00f1o del ancho del <strong>viewport<\/strong> (parte visible) de nuestra ventana.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">innerHeight<\/h2>\n\n\n\n<p>Esta propiedad hace referencia al tama\u00f1o del alto del <strong>viewport<\/strong> (parte visible) de nuestra ventana.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">outerWidth<\/h2>\n\n\n\n<p>Es la propiedad que hace referencia al ancho de nuestro <strong>navegador<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">outerHeight<\/h2>\n\n\n\n<p>Es la propiedad que hace referencia al alto de nuestro <strong>navegador<\/strong>.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">console.log(window.innerWidth);\nconsole.log(window.innerHeight);\nconsole.log(window.outerWidth);\nconsole.log(window.outerHeight);<\/pre>\n\n\n\n<p>Vamos a ver otro ejm.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">window.addEventListener(\"resize\", e =&gt; {\n  console.clear();\n  console.log(\"--Resize--\");\n  console.log(window.innerWidth);\n  console.log(window.innerHeight);\n  console.log(window.outerWidth);\n  console.log(window.outerHeight);\n  console.log(e); \n};<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Otras propiedades<\/h2>\n\n\n\n<p>Tenemos otras propiedades importantes como son:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Control del desplazamiento del scroll<\/h3>\n\n\n\n<p>Tenemos dos propiedades para ello, son <strong><em>scrollX<\/em><\/strong> y <strong><em>scrollY<\/em><\/strong>. Para ello vamos a utilizar un <strong>evento<\/strong> denominado justamente <strong><em>scroll<\/em><\/strong>. Vamos a hacer un ejercicio para entender su funcionamiento.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n&lt;title&gt;Control de desplazamiento del Scroll&lt;\/title&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n&lt;h1&gt;Control de desplazamiento del Scroll&lt;\/h1&gt;\n&lt;h2 style=\"width: 2000px;\"&gt;Manejo del BOM&lt;\/h2&gt;\n\n&lt;script&gt;\n  window.addEventListener(\"scroll\", e =&gt; {\n  console.clear();\n  console.log(\"Evento Scroll\");\n  console.log(window.scrollX);\n  console.log(window.scrollY);\n})\n&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Coordenadas de la pantalla<\/h2>\n\n\n\n<p>Tenemos m\u00e1s propiedades, por ejm, en que coordenada de nuestra pantalla comienza a dibujarse la ventana de nuestro navegador, para ello podemos hacer uso de las propiedades <strong><em>screenX<\/em><\/strong> y <strong><em>screenY<\/em><\/strong>. Para ello vamos a utilizar un evento denominado <strong><em>load<\/em><\/strong>.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">window.addEventListener(\"load\", e =&gt; {\n  console.log(window.screenX);\n  console.log(window.screenY);\n});<\/pre>\n\n\n\n<p>Cuando termine de cargar la ventana aparecer\u00e1n los consoles. Si hemos trabajado con <strong>jQuery<\/strong>, es el t\u00edpico <strong><em>$(load)<\/em><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Evento DOMContentLoaded<\/h2>\n\n\n\n<p>Este evento funciona como el evento <strong><em>load<\/em><\/strong>, pero es mucho m\u00e1s r\u00e1pido.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">document.addEventListener(\"DOMContentLoaded\", e =&gt; {\n  console.log(window.screenX);\n  console.log(window.screenY);\n});<\/pre>\n\n\n\n<p><strong><em>DOMContentLoaded<\/em><\/strong>&nbsp; se puede utilizar para <strong>peticiones as\u00edncronas<\/strong> al <strong>consumo de APIs<\/strong>, o esperar la respuesta de la conexi\u00f3n a una <strong>base de datos<\/strong>. Es una mejor pr\u00e1ctica hacer uso de este evento en lugar del evento <strong><em>load<\/em><\/strong>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Nota<\/strong>: uno de los errores frecuentes es utilizar el evento <strong>load<\/strong> para inicializar algunas cargas de nuestro sitio, cuando <strong>DOMContentLoaded<\/strong> es mucho m\u00e1s apropiado.<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>En los cap\u00edtulos anteriores estuvimos trabajando el DOM, todos los conceptos b\u00e1sicos para poder trabajar cualquier tipo de evento. En [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":855,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-858","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En los cap\u00edtulos anteriores estuvimos trabajando el DOM, todos los conceptos b\u00e1sicos para poder trabajar cualquier tipo de evento. En [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=858"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/858\/revisions"}],"predecessor-version":[{"id":860,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/858\/revisions\/860"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/855"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}