When you change a trigger trigger once to the state of "True" or "False"

I am struggling to find a solution, I need help, please: This is a simple example:

function ifTrueInitiateOnce() {
  console.log("True function should be initiated/triggered Once");
}

function ifFalseInitiateOnce() {
  console.log("False function should be initiated/triggered Once");
}

$(window).resize(function () {  
  if ($(window).width() > 767) {
    ifTrueInitiateOnce()
  } else {
  ifFalseInitiateOnce()
});

Here is the detailed code I'm trying to fix:

var enteredMobileView = false;
var enteredDesktopView = false;

var delay = (function () {
  var timer = 0;
  return function (callback, ms) {
    clearTimeout(timer);
    timer = setTimeout(callback, ms);
  };
})();

function getWinSize() {
  if ($(window).width() > 767) {
    enteredDesktopView = true;
    enteredMobileView = false;
  } else {
    enteredDesktopView = false;
    enteredMobileView = true;
  }
}

getWinSize();

$(window).resize(function () {
  delay(function () {

    getWinSize();

  }, 500);
});

if (enteredDesktopView) {
  enteredDesktopView = false;
  ifDesktopInitiateOnce();
}

if (enteredMobileView) {
  enteredMobileView = false;
  ifMobileInitiateOnce()
}

function ifDesktopInitiateOnce() {
  console.log("DESKTOP True function should be initiated/triggered Once");
}

function ifMobileInitiateOnce() {
  console.log("MOBILE True function should be initiated/triggered Once");
}

I don’t understand how correct or difficult it can be. I am trying to exit this code. When the screen goes into mobile viewing or desktop mode, while the RESIZING window, if it reaches the size of a mobile phone, then run the function only once and again, resizing the window from the desktop to mobile, then run the function only once and do the same when resizing the desktop.

+3
source share
3 answers
$(window).resize(function () {
  if ($(window).width() > 767) {
    if (typeof(desktop) == "undefined") {
      desktop = true;
      mobile = undefined;
      console.log("DESKTOP True function should be initiated/triggered Once")
    }
  } else {
    if (typeof(mobile) == "undefined") {
      mobile = true;
      desktop = undefined;
      console.log("MOBILE True function should be initiated/triggered Once")
    }
  }
});
+1

, , . getWinSize(), , , - . , .

function desktopFunction() {
  console.log("True function should be initiated/triggered Once");
}

function mobileFunction() {
  console.log("False function should be initiated/triggered Once");
}

var enteredMobileView = enteredDesktopView = false,
    delay = (function () {
      var timer = 0;

      return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
      };
    })();

function getWinSize() {

  if ($(window).width() > 767) {

    if(! enteredDesktopView){
        desktopFunction();
        enteredDesktopView = true;
        enteredMobileView = false;
    }

  } else {

    if(! enteredMobileView){
        mobileFunction();
        enteredMobileView = true;
        enteredDesktopView = false;
    }

  }

}

// getWinSize();

$(window).resize(function () {
  delay(function () {
    getWinSize();
  }, 500);
});
+2
var win = (function() {
    var resize;
    var view;
    var enteredDesktopView;
    var enteredMobileView;

    function createInstance() {
        var object = new Object("winresize");
        return object;
    }

    function getWinSize() {
        if ($(window).width() > 767) {
            enteredDesktopView = true;
            enteredMobileView = false;
        } else {
            enteredDesktopView = false;
            enteredMobileView = true;
        }
        view = {
            "desktopView": enteredDesktopView,
            "mobileView": enteredMobileView
        };
    }



    return {
        checkResize: function() {
            if (!resize) {
                resize = createInstance();
                getWinSize();
            }
            return resize;
        }

    };
})();

function run() {
    win.checkResize();
    console.log(win.view);
}

run();
0
source

Source: https://habr.com/ru/post/1671403/


All Articles