• 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

    • Get Windows 11 Home or Pro for only $9.97 with this coupon by Steven Parker Today's highlighted deal comes via our Apps + Software section of the Neowin Deals store, where you can save up to 92% off on a Microsoft Windows 11 Home, or Pro license. Upgrade your computing experience with Windows 11 Pro. This cutting-edge operating system boasts a sleek new design and advanced tools to help you work faster and smarter. From creative projects to gaming and beyond, Windows 11 delivers the power and flexibility you need to achieve your goals. With a focus on productivity, the new features are easy to learn and use, enhancing your workflow and efficiency. Whether you're a student, professional, gamer, or creative, Windows 11 Home has everything you need to take your productivity to the next level. New interface. easier on the eyes & easier to use Biometrics login*.Encrypted authentication & advanced antivirus defenses DirectX 12 Ultimate. Play the latest games with graphics that rival reality. DirectX 12 Ultimate comes ready to maximize your hardware* Screen space. Snap layouts, desktops & seamless redocking Widgets. Stay up-to-date with the content you love & the new you care about Microsoft Teams. Stay in touch with friends and family with Microsoft Teams, which can be seamlessly integrated into your taskbar** Wake & lock. Automatically wake up when you approach and lock when you leave Smart App Control. Provides a layer of security by only permitting apps with good reputations to be installed Windows Studio Effects. Designed with Background Blur, Eye Contact, Voice Focus, & Automatic Framing Touchscreen. For a true mouse-less or keyboard-less experience TPM 2.0. Helps prevent unwanted tampering Windows 11 Pro also includes a number of productivity-focused features, such as the ability to snap multiple windows together and create custom layouts, improved voice typing, and a new, more powerful search experience. Personal and professional users will enjoy a modern and secure computing experience, with improved performance and productivity features to help users get more done. Only on Windows 11 Pro If you require enterprise-oriented features for your daily professional tasks, then Windows 11 Pro is a better option. Set up with a local account (only when set up for work or school) Join Active Directory/Azure AD Hyper-V Windows Sandbox Microsoft Remote Desktop BitLocker device encryption Windows Information Protection Mobile device management (MDM) Group Policy Enterprise State Roaming with Azure Assigned Access Dynamic Provisioning Windows Update for Business Kiosk mode Maximum RAM: 2TB Maximum no. of CPUs: 2 Maximum no. of CPU cores: 128 Good to know This license is for Windows 11 only. It is NOT intended to be used for upgrading Microsoft Office (MSO) included in Parallels Pro. However, it will still work with Parallels Pro and allow you to run Windows applications including MSO, but it DOES NOT include an upgrade MSO itself. It is still compatible with Microsoft Office ONLY if you have a separate license for it. Length of access: lifetime Redemption deadline: redeem your code within 30 days of purchase Access options: desktop Max number of device(s): 1 Version: Windows 11 Pro Updates included Click here to verify Microsoft partnership For example, a Microsoft Windows 11 Pro license normally costs $199, but you can pick it up for just $14.97 for a limited time, that represents a saving of $184. For a full description, specs, and license info, click the link below. Get Windows 11 Home or Pro for just $9.97 use MSO5 coupon when checking out Coupon expires on June 29. Although priced in U.S. dollars, this deal is available for digital purchase worldwide. We post these because we earn commission on each sale so as not to rely solely on advertising, which many of our readers block. It all helps toward paying staff reporters, servers and hosting costs. Other ways to support Neowin Whitelist Neowin by not blocking our ads Create a free member account to see fewer ads Make a donation to support our day to day running costs Subscribe to Neowin - for $14 a year, or $28 a year for an ad-free experience Disclosure: Neowin benefits from revenue of each sale made through our branded deals site powered by StackCommerce.
    • I hoped it was a bug and will be fixed. Why haven't they made so it asks for a PIN in the dark then? It tries to use the camera for several minutes or I have to manually select PIN and the next day in the morning I'll have to manually select the camera back, because it will just be sitting and waiting for a PIN. It just remembers the last used method regardless of the lighting.
    • I would recommend PowerToys just to remap a Copilot button on modern laptops for something more useful than Microsoft allows in Windows Settings. I also use some other tools like "Always on Top" and "Crop and Lock".
    • Makes sense, we know MS doesn't take dark mode seriously, lol.
    • Why would you think Johny Ives is behind this ? he has not worked at Apple or on a smart Phone or Phone in general for long time On 27 June 2019, Apple announced that Ive would depart Apple after 27 years
  • Recent Achievements

    • Veteran
      1337ish went up a rank
      Veteran
    • Rookie
      john.al went up a rank
      Rookie
    • Week One Done
      patrickft456 earned a badge
      Week One Done
    • One Month Later
      patrickft456 earned a badge
      One Month Later
    • One Month Later
      Jdoe25 earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      640
    2. 2
      ATLien_0
      275
    3. 3
      +FloatingFatMan
      171
    4. 4
      Michael Scrip
      155
    5. 5
      Steven P.
      138
  • Tell a friend

    Love Neowin? Tell a friend!