{"id":18850,"date":"2013-11-24T13:18:22","date_gmt":"2013-11-24T11:18:22","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=18850"},"modified":"2013-11-24T13:18:22","modified_gmt":"2013-11-24T11:18:22","slug":"echo-lazy-loading-html5-images-with-data-attributes-via-javascript","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/","title":{"rendered":"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/github.com\/toddmotto\/echo\">Echo<\/a>\u00a0 is quite handy for web developers. \u00a0On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). \u00a0One way to work around this is to only load those images that are in the visible part of the screen. \u00a0<a href=\"http:\/\/toddmotto.com\/labs\/echo\/\">Here<\/a> is a demo of how it works. \u00a0Just keep scrolling down and notice how by default you have a blank.gif image shown, with a standard loading indicator and a split second later you see the actual image which was supposed to be in there.<\/p>\n<p>Simple, easy, elegant &#8211; and that&#8217;s how I like it.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Echo\u00a0 is quite handy for web developers. \u00a0On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). \u00a0One way to work around this is to only load those images that are in the visible part of &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[1190,1139,246,1057,1330],"keyring_services":[],"class_list":["post-18850","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-html","tag-javascript","tag-optimization","tag-performance","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2013-11-24T11:18:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2013-11-24T11:18:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#blogposting\",\"name\":\"Echo \\u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov\",\"headline\":\"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2013-11-24T13:18:22+02:00\",\"dateModified\":\"2013-11-24T13:18:22+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, HTML, JavaScript, optimization, performance, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#listItem\",\"name\":\"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#listItem\",\"position\":4,\"name\":\"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/\",\"name\":\"Echo \\u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov\",\"description\":\"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2013\\\/11\\\/24\\\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2013-11-24T13:18:22+02:00\",\"dateModified\":\"2013-11-24T13:18:22+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov","description":"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#blogposting","name":"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov","headline":"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2013-11-24T13:18:22+02:00","dateModified":"2013-11-24T13:18:22+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#webpage"},"articleSection":"All, Programming, Technology, Web work, HTML, JavaScript, optimization, performance, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#listItem","name":"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#listItem","position":4,"name":"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/","name":"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov","description":"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2013-11-24T13:18:22+02:00","dateModified":"2013-11-24T13:18:22+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov","og:description":"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of","og:url":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2013-11-24T11:18:22+00:00","article:modified_time":"2013-11-24T11:18:22+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Echo \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript - Leonid Mamchenkov","twitter:description":"Echo is quite handy for web developers. On those pages that feature a lot of images, things can get slow and the server might get too much of an abuse (with more traffic thrown at it). One way to work around this is to only load those images that are in the visible part of","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"18850","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 11:47:41","updated":"2026-01-15 09:50:04","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tEcho \u2013 lazy-loading HTML5 images with data-* attributes via JavaScript\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"Echo &#8211; lazy-loading HTML5 images with data-* attributes via JavaScript","link":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/24\/echo-lazy-loading-html5-images-with-data-attributes-via-javascript\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":22158,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/07\/09\/intense-image-viewer-a-javascript-library-for-viewing-images-in-a-fully-full-screen\/","url_meta":{"origin":18850,"position":0},"title":"Intense Image Viewer &#8211; a JavaScript library for viewing images in a fully full screen","author":"Leonid Mamchenkov","date":"July 9, 2014","format":"link","excerpt":"Intense Image Viewer - a JavaScript library for viewing images in a fully full screen.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":21696,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/04\/24\/raphael-javascript-library-for-working-with-vector-images\/","url_meta":{"origin":18850,"position":1},"title":"Rapha\u00ebl &#8211; JavaScript library for working with vector images","author":"Leonid Mamchenkov","date":"April 24, 2014","format":"link","excerpt":"Rapha\u00ebl - JavaScript library for working with vector images. Rapha\u00ebl is a small JavaScript library that should simplify your work with vector graphics on the web. If you want to create your own specific chart or image crop and rotate widget, for example, you can achieve it simply and easily\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27620,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/25\/how-to-use-emerge-to-make-your-website-load-nicely\/","url_meta":{"origin":18850,"position":2},"title":"How to use Emerge to make your website load nicely","author":"Leonid Mamchenkov","date":"May 25, 2017","format":false,"excerpt":"Ilya Birman explains how to use Emerge to make your website load nicely. \u00a0Emerge is a JavaScript library that he wrote to help with coordinated loading of the page elements. \u00a0The library is not free, but the license fee is very reasonable. The examples and documentation look good. \u00a0I don't\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/05\/emerge-license.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":42827,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/07\/16\/jexcel-the-javascript-spreadsheet\/","url_meta":{"origin":18850,"position":3},"title":"jExcel &#8211; the JavaScript spreadsheet","author":"Leonid Mamchenkov","date":"July 16, 2019","format":false,"excerpt":"Tables on the web are always challenging. Whether you do them by hand, or with the help of a framework or library, they often carry a lot of complexity, performance costs, and compatibility issues. Recently I came across jExcel, which seems to be quite powerful, with lots of advanced features,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/07\/jexcel.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/07\/jexcel.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/07\/jexcel.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":22535,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/09\/17\/comcastify-js-sometimes-images-just-load-too-damned-fast\/","url_meta":{"origin":18850,"position":4},"title":"Comcastify.js &#8211; sometimes images just load too damned fast","author":"Leonid Mamchenkov","date":"September 17, 2014","format":"link","excerpt":"Comcastify.js - sometimes images just load too damned fast","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27266,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/01\/26\/html-canvas-tutorial\/","url_meta":{"origin":18850,"position":5},"title":"HTML Canvas Tutorial","author":"Leonid Mamchenkov","date":"January 26, 2017","format":false,"excerpt":"Skilled.co put together this HTML Canvas Tutorial, which covers the HTML 5 <canvas> functionality, that allows web developers to draw all sorts of graphics on the fly, using JavaScript. \u00a0The tutorial is available for download in PNG and PDF formats, as well as on the webpage, and it covers the\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/01\/canvas-500x228.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/18850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=18850"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/18850\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=18850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=18850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=18850"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=18850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}