重置一次运行功能

时间:2018-01-11 17:50:48

标签: javascript jquery facebook facebook-pixel

我正在使用facebook像素代码来确定用户何时阅读了整篇文章。我有一个无限的博客,所以当用户向下滚动页面时,URL会发生变化。我当前有一个函数在用户到达页面末尾时运行一次,但我需要修改它,所以如果URL更改,则重置该函数并重新运行。这是我目前的代码。

// determine the position of element
jQuery.fn.isInViewport = function() {
  var elementTop = jQuery(this).offset().top;
  var elementBottom = elementTop + jQuery(this).outerHeight();
  var viewportTop = jQuery(window).scrollTop();
  var viewportBottom = viewportTop + jQuery(window).height();
  return elementBottom > viewportTop && elementTop < viewportBottom;
};

// grab the current URL
var originalURL = window.location.href;

// check to see if element is in viewport
jQuery(window).on('resize scroll', function() {

  var currentURL = '';

  jQuery('.end-of-content-icon').each(function() {

    if (jQuery(this).isInViewport()) {

      currentURL = window.location.href;

      if(originalURL !== currentURL) {

        canOnlyFireOnce();

        originalURL = currentURL;

      }
    }
  });
});

// function to only fire once (courtesy of David Walsh)
function once(fn, context) { 
  var result;

  return function() { 
    if(fn) {
      result = fn.apply(context || this, arguments);
      fn = null;
    }

    return result;
  };
}

// Usage
var canOnlyFireOnce = once(function() {

  fbq('track', 'Lead');

});

1 个答案:

答案 0 :(得分:0)

用不同的功能解决它。我通过固定链接并将其添加到数组中。如果数组中尚未存在永久链接,那么变量“触发器”就会出现。将reset设置为true并运行该函数。

{{1}}