PageSourceSearch

https://www.okamura.co.jp/global_assets/js/jquery.inview.js?ver=20260730-151130

js okamura.co.jp collected 2026-10-01 10:31:12 UTC 4,880 bytes, 142 lines download raw bytes

vendor: 4,535 bytes, lines 1-132
1/**
2 * author Christopher Blum
3 *    - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/
4 *    - forked from http://github.com/zuk/jquery.inview/
5 */
6(function (factory) {
7  if (typeof define == 'function' && define.amd) {
8    // AMD
9    define(['jquery'], factory);
10  } else if (typeof exports === 'object') {
11    // Node, CommonJS
12    module.exports = factory(require('jquery'));
13  } else {
14      // Browser globals
15    factory(jQuery);
16  }
17}(function ($) {
18
19  var inviewObjects = [], viewportSize, viewportOffset,
20      d = document, w = window, documentElement = d.documentElement, timer;
21
22  $.event.special.inview = {
23    add: function(data) {
24      inviewObjects.push({ data: data, $element: $(this), element: this });
25      // Use setInterval in order to also make sure this captures elements within
26      // "overflow:scroll" elements or elements that appeared in the dom tree due to
27      // dom manipulation and reflow
28      // old: $(window).scroll(checkInView);
29      //
30      // By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays
31      // intervals while the user scrolls. Therefore the inview event might fire a bit late there
32      //
33      // Don't waste cycles with an interval until we get at least one element that
34      // has bound to the inview event.
35      if (!timer && inviewObjects.length) {
36         timer = setInterval(checkInView, 250);
37      }
38    },
39
40    remove: function(data) {
41      for (var i=0; i<inviewObjects.length; i++) {
42        var inviewObject = inviewObjects[i];
43        if (inviewObject.element === this && inviewObject.data.guid === data.guid) {
44          inviewObjects.splice(i, 1);
45          break;
46        }
47      }
48
49      // Clear interval when we no longer have any elements listening
50      if (!inviewObjects.length) {
51         clearInterval(timer);
52         timer = null;
53      }
54    }
55  };
56
57  function getViewportSize() {
58    var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth };
59
60    // if this is correct then return it. iPad has compat Mode, so will
61    // go into check clientHeight/clientWidth (which has the wrong value).
62    if (!size.height) {
63      mode = d.compatMode;
64      if (mode || !$.support.boxModel) { // IE, Gecko
65        domObject = mode === 'CSS1Compat' ?
66          documentElement : // Standards
67          d.body; // Quirks
68        size = {
69          height: domObject.clientHeight,
70          width:  domObject.clientWidth
71        };
72      }
73    }
74
75    return size;
76  }
77
78  function getViewportOffset() {
79    return {
80      top:  w.pageYOffset || documentElement.scrollTop   || d.body.scrollTop,
81      left: w.pageXOffset || documentElement.scrollLeft  || d.body.scrollLeft
82    };
83  }
84
85  function checkInView() {
86    if (!inviewObjects.length) {
87      return;
88    }
89
90    var i = 0, $elements = $.map(inviewObjects, function(inviewObject) {
91      var selector  = inviewObject.data.selector,
92          $element  = inviewObject.$element;
93      return selector ? $element.find(selector) : $element;
94    });
95
96    viewportSize   = viewportSize   || getViewportSize();
97    viewportOffset = viewportOffset || getViewportOffset();
98
99    for (; i<inviewObjects.length; i++) {
100      // Ignore elements that are not in the DOM tree
101      if (!$.contains(documentElement, $elements[i][0])) {
102        continue;
103      }
104
105      var $element      = $($elements[i]),
106          elementSize   = { height: $element[0].offsetHeight, width: $element[0].offsetWidth },
107          elementOffset = $element.offset(),
108          inView        = $element.data('inview');
109
110      // Don't ask me why because I haven't figured out yet:
111      // viewportOffset and viewportSize are sometimes suddenly null in Firefox 5.
112      // Even though it sounds weird:
113      // It seems that the execution of this function is interferred by the onresize/onscroll event
114      // where viewportOffset and viewportSize are unset
115      if (!viewportOffset || !viewportSize) {
116        return;
117      }
118
119      if (elementOffset.top + elementSize.height > viewportOffset.top &&
120          elementOffset.top < viewportOffset.top + viewportSize.height &&
121          elementOffset.left + elementSize.width > viewportOffset.left &&
122          elementOffset.left < viewportOffset.left + viewportSize.width) {
123        if (!inView) {
124          $element.data('inview', true).trigger('inview', [true]);
125        }
126      } else if (inView) {
127        $element.data('inview', false).trigger('inview', [false]);
128      }
129    }
130  }
131
132  $(w).
132on("scroll resize scrollstop", function() {
133    viewportSize = viewportOffset = null;
134  });
135
136  // IE < 9 scrolls to focused elements without firing the "scroll" event
137  if (!documentElement.addEventListener && documentElement.attachEvent) {
138    documentElement.attachEvent("onfocusin", function() {
139      viewportOffset = null;
140    });
141  }
142}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.