{ "title":"IntersectionObserver", "description":"API that can be used to understand the visibility and position of DOM elements relative to a containing element or to the top-level viewport. The position is delivered asynchronously and is useful for understanding the visibility of elements and implementing pre-loading and deferred loading of DOM content.", "spec":"https://www.w3.org/TR/intersection-observer/", "status":"wd", "links":[ { "url":"https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API", "title":"MDN Web Docs - Intersection Observer" }, { "url":"https://github.com/w3c/IntersectionObserver/tree/master/polyfill", "title":"Polyfill" }, { "url":"https://developers.google.com/web/updates/2016/04/intersectionobserver", "title":"Google Developers article" } ], "bugs":[ { "description":"[Chromium](https://bugs.chromium.org/p/chromium/issues/detail?id=833725): In a background tab, IntersectionObserver does not trigger its callback." } ], "categories":[ "DOM", "JS API" ], "stats":{ "ie":{ "5.5":"n", "6":"n", "7":"n", "8":"n", "9":"n", "10":"n", "11":"n" }, "edge":{ "12":"n", "13":"n", "14":"n", "15":"a #3", "16":"y", "17":"y", "18":"y", "76":"y #4" }, "firefox":{ "2":"n", "3":"n", "3.5":"n", "3.6":"n", "4":"n", "5":"n", "6":"n", "7":"n", "8":"n", "9":"n", "10":"n", "11":"n", "12":"n", "13":"n", "14":"n", "15":"n", "16":"n", "17":"n", "18":"n", "19":"n", "20":"n", "21":"n", "22":"n", "23":"n", "24":"n", "25":"n", "26":"n", "27":"n", "28":"n", "29":"n", "30":"n", "31":"n", "32":"n", "33":"n", "34":"n", "35":"n", "36":"n", "37":"n", "38":"n", "39":"n", "40":"n", "41":"n", "42":"n", "43":"n", "44":"n", "45":"n", "46":"n", "47":"n", "48":"n", "49":"n", "50":"n", "51":"n", "52":"n d #1", "53":"n d #1", "54":"n d #1", "55":"y", "56":"y", "57":"y", "58":"y", "59":"y", "60":"y", "61":"y", "62":"y", "63":"y", "64":"y", "65":"y", "66":"y", "67":"y", "68":"y", "69":"y", "70":"y", "71":"y" }, "chrome":{ "4":"n", "5":"n", "6":"n", "7":"n", "8":"n", "9":"n", "10":"n", "11":"n", "12":"n", "13":"n", "14":"n", "15":"n", "16":"n", "17":"n", "18":"n", "19":"n", "20":"n", "21":"n", "22":"n", "23":"n", "24":"n", "25":"n", "26":"n", "27":"n", "28":"n", "29":"n", "30":"n", "31":"n", "32":"n", "33":"n", "34":"n", "35":"n", "36":"n", "37":"n", "38":"n", "39":"n", "40":"n", "41":"n", "42":"n", "43":"n", "44":"n", "45":"n", "46":"n", "47":"n", "48":"n", "49":"n", "50":"n", "51":"a #3", "52":"a #3", "53":"a #3", "54":"a #3", "55":"a #3", "56":"a #3", "57":"a #3", "58":"y", "59":"y", "60":"y", "61":"y", "62":"y", "63":"y", "64":"y", "65":"y #4", "66":"y #4", "67":"y #4", "68":"y #4", "69":"y #4", "70":"y #4", "71":"y #4", "72":"y #4", "73":"y #4", "74":"y #4", "75":"y #4", "76":"y #4", "77":"y #4", "78":"y #4", "79":"y #4", "80":"y #4" }, "safari":{ "3.1":"n", "3.2":"n", "4":"n", "5":"n", "5.1":"n", "6":"n", "6.1":"n", "7":"n", "7.1":"n", "8":"n", "9":"n", "9.1":"n", "10":"n", "10.1":"n", "11":"n", "11.1":"n", "12":"n", "12.1":"y", "13":"y", "TP":"y" }, "opera":{ "9":"n", "9.5-9.6":"n", "10.0-10.1":"n", "10.5":"n", "10.6":"n", "11":"n", "11.1":"n", "11.5":"n", "11.6":"n", "12":"n", "12.1":"n", "15":"n", "16":"n", "17":"n", "18":"n", "19":"n", "20":"n", "21":"n", "22":"n", "23":"n", "24":"n", "25":"n", "26":"n", "27":"n", "28":"n", "29":"n", "30":"n", "31":"n", "32":"n", "33":"n", "34":"n", "35":"n", "36":"n", "37":"n", "38":"a #3", "39":"a #3", "40":"a #3", "41":"a #3", "42":"a #3", "43":"a #3", "44":"a #3", "45":"y", "46":"y", "47":"y", "48":"y", "49":"y", "50":"y", "51":"y", "52":"y", "53":"y", "54":"y", "55":"y", "56":"y", "57":"y", "58":"y", "60":"y", "62":"y" }, "ios_saf":{ "3.2":"n", "4.0-4.1":"n", "4.2-4.3":"n", "5.0-5.1":"n", "6.0-6.1":"n", "7.0-7.1":"n", "8":"n", "8.1-8.4":"n", "9.0-9.2":"n", "9.3":"n", "10.0-10.2":"n", "10.3":"n", "11.0-11.2":"n", "11.3-11.4":"n", "12.0-12.1":"n", "12.2-12.3":"y", "13":"y" }, "op_mini":{ "all":"n" }, "android":{ "2.1":"n", "2.2":"n", "2.3":"n", "3":"n", "4":"n", "4.1":"n", "4.2-4.3":"n", "4.4":"n", "4.4.3-4.4.4":"n", "76":"y" }, "bb":{ "7":"n", "10":"n" }, "op_mob":{ "10":"n", "11":"n", "11.1":"n", "11.5":"n", "12":"n", "12.1":"n", "46":"y" }, "and_chr":{ "76":"y" }, "and_ff":{ "68":"y" }, "ie_mob":{ "10":"n", "11":"n" }, "and_uc":{ "12.12":"a #3" }, "samsung":{ "4":"n", "5.0-5.4":"a #3", "6.2-6.4":"a #3", "7.2-7.4":"y", "8.2":"y", "9.2":"y" }, "and_qq":{ "1.2":"n" }, "baidu":{ "7.12":"n" }, "kaios":{ "2.5":"n" } }, "notes":"", "notes_by_num":{ "1":"Enabled in Firefox by setting the `about:config` preference `dom.IntersectionObserver.enabled` to true", "2":"\"Preliminary\" support as feature is still in development", "3":"`isIntersecting` property of `IntersectionObserverEntry` was not implemented, returning `undefined`", "4":"IntersectionObserver does not trigger its callback in a Chrome background tab" }, "usage_perc_y":85.38, "usage_perc_a":3.92, "ucprefix":false, "parent":"", "keywords":"", "ie_id":"intersectionobserver", "chrome_id":"5695342691483648", "firefox_id":"intersection-observer", "webkit_id":"specification-intersection-observer", "shown":true }