• 0

Loading different javascript depending on window size with if and else statements.


Question

So I am loading in different javascript depending on the screen width. The script is simple and works fine and loads the appropriate script depending on screen width. The problem is it only loads in the script depending on the original screen width. If i change my screen width to be smaller it doesn't change unless i refresh the page.

Anybody know of a simple fix? I am still pretty nooby with javascript.

Thanks!

Code im using: 

if ( $(window).width() > 1280) {
//Add your JavaScript for large screens here
}
else if( $(window).width() > 768) {
//Add your JavaScript for medium screens here
}

else ( $(window).width() > 439) {
//Add your JavaScript for small screens here
}

14 answers to this question

Recommended Posts

  • 0

Check out how it's done here, I use it and it works for me:

https://github.com/eddiemachado/bones/blob/master/library/js/scripts.js

In short you need to use:

$(window).resize(function () {     *your code here*}):
  • Like 1
  • 0

And if you have a lot of code depending for each of those cases you might consider using an AMD library like require.

$(window).resize(function () {     

if ($(window).width() > ...)
    require(...);
else if ($(window).width() > ...)
    require(...);

}):

That way people with a slower connection and probably fixed screen size (smartphones and tablets) don't need to load unnecessary javascript.

  • Like 1
  • 0
  On 15/09/2014 at 12:19, Brian M. said:

Loading javascript on resize is a bad idea.

 

What are you trying to accomplish? 

And why is that a bad idea? I have 3 interactive headers (phone, tablet, computer) made with Adobe Edge animate, and I just combine all their javascript files in one and set the screen width to each one.

 

All three files use the same resources, images, symbols, etc. So the user wouldn't be loading it all multiple times.

  • 0
  On 15/09/2014 at 05:46, Mieky242 said:

Check out how it's done here, I use it and it works for me:

https://github.com/eddiemachado/bones/blob/master/library/js/scripts.js

In short you need to use:

 

$(window).resize(function () {     *your code here*}):

 

 

  On 15/09/2014 at 06:23, XerXis said:

And if you have a lot of code depending for each of those cases you might consider using an AMD library like require.

$(window).resize(function () {     

if ($(window).width() > ...)
    require(...);
else if ($(window).width() > ...)
    require(...);

}):

That way people with a slower connection and probably fixed screen size (smartphones and tablets) don't need to load unnecessary javascript.

Cool!! Thank you guys!

  • 0
  On 15/09/2014 at 22:34, Veggie1232 said:

And why is that a bad idea?

Run this fiddle, and resize the browser window. You might be surprised how many times your resize function is being called.

http://jsfiddle.net/s1qt0ypf/1/

  • 0
  On 15/09/2014 at 22:47, Nik L said:

Your design is flawed if you have to load different resources such as JavaScript for different resolutions

 

(except for exceptional circumstances)

I am simply resizing the stage and repositioning elements in the stage (Stage is what you animate on in Adobe Edge animate) and depending on the screen size will reposition its elements and take in the stages width.

Seeing as its a personal project I doubt my method is "flawed" and taking in account my current understanding of javascript which is very little. I think this is fine. Unless you wana go over details on a better way. But simply telling me my way is flawed is counter productive to the problem.

  • 0

You should just need a single script to govern the animation of the elements regardless of the screen size, having multiple independent scripts that perform the same function but only differ in the input is sub-optimal (You need to keep them in sync, etc.).

  • 0
  On 16/09/2014 at 06:58, The_Decryptor said:

You should just need a single script to govern the animation of the elements regardless of the screen size, having multiple independent scripts that perform the same function but only differ in the input is sub-optimal (You need to keep them in sync, etc.).

 

In that case Ill see what I can do. Just gana start from scratch. Should be easier second time around now that I have a "rough draft" Sigh.. :(

  • 0
  Quote
Seeing as its a personal project I doubt my method is "flawed" and taking in account my current understanding of javascript which is very little. I think this is fine.

 

Your logic is also flawed.

  • 0
  On 17/09/2014 at 22:53, Nik L said:

Your logic is also flawed.

 

So you've told him his logic is flawed without offering any help... I don't get why you're bothering to post.  You aren't being constructive in any way at all. Either help him, or don't post... <Snip>

He's clearly stated his understandign of JS is minimal, and he's trying to learn and get some help.

 

Everyone else in this thread is giving him help with either the solution he's asking, OR, they're helping him in doing it the proper way.

  • 0
  On 17/09/2014 at 22:53, Nik L said:

Your logic is also flawed.

 

 

  On 18/09/2014 at 19:36, DeathLace said:

So you've told him his logic is flawed without offering any help... I don't get why you're bothering to post.  You aren't being constructive in any way at all. Either help him, or don't post... <Snip>

He's clearly stated his understandign of JS is minimal, and he's trying to learn and get some help.

 

Everyone else in this thread is giving him help with either the solution he's asking, OR, they're helping him in doing it the proper way.

I've got to agree with DeathLace. If someone is trying to learn, just telling them that they are wrong isn't helpful.
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • It's significant growth for Linux considering the market share, so it could have had that effect I described.
    • Microsoft and Crowdstrike announce partnership on threat actor naming by Pradeep Viswanathan Whenever a cyberattack is discovered, companies disclose it to the public and assign it a unique name based on their internal procedures. Unfortunately, this leads to inconsistencies, as each company has its own naming conventions. As a result, the same threat actor behind a cyberattack may end up with multiple names, causing delays and confusion in response efforts. For example, a threat actor that Microsoft refers to as Midnight Blizzard might be known as Cozy Bear, APT29, or UNC2452 by other security vendors. To address this issue, Microsoft and CrowdStrike are teaming up. These companies will align their individual threat actor taxonomies to help security professionals respond to cyberattacks with greater clarity and confidence. It’s important to note that Microsoft and CrowdStrike are not attempting to create a single naming standard. Instead, they are releasing a mapping that lists common threat actors tracked by both companies, matched according to their respective taxonomies. The mapping also includes corresponding aliases from each group’s naming system. You can view the joint threat actor mapping by Microsoft and CrowdStrike here. Although this threat actor taxonomy mapping is a joint effort between Microsoft and CrowdStrike, Google/Mandiant and Palo Alto Networks' Unit 42 are expected to contribute to this initiative in the future. Vasu Jakkal, Corporate Vice President of Microsoft Security, wrote the following about this collaboration with CrowdStrike: As more organizations join this initiative, the collective defense against cyber threats will undoubtedly be improved.
    • You make no sense since most of the stuff on YouTube is free to begin with. Comparing Netflix to YouTube is not even remotely the same. YouTube has tons of free videos to begin with, unlike Netflix, you are paying Netflix for original style of programming.
    • Youtube can go screw themselves. Never ever, ever will I pay for this BS nonsense. And I encourage anyone else not to either.
  • Recent Achievements

    • Week One Done
      Nullun earned a badge
      Week One Done
    • First Post
      sultangris earned a badge
      First Post
    • Reacting Well
      sultangris earned a badge
      Reacting Well
    • First Post
      ClarkB earned a badge
      First Post
    • Week One Done
      Epaminombas earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      172
    2. 2
      ATLien_0
      125
    3. 3
      snowy owl
      122
    4. 4
      Xenon
      116
    5. 5
      +Edouard
      93
  • Tell a friend

    Love Neowin? Tell a friend!