• 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

    • Trump announces a gold smartphone for $499 and new "T1 Mobile" 5G wireless service by Sagar Naresh Bhavsar The Trump Organization, spearheaded by President Trump's sons, Donald Trump Jr. and Eric Trump, has unveiled "T1 Mobile," a new mobile wireless service under the Trump Mobile brand. The service aims to offer affordable 5G services while competing with major telecom providers, with a patriotic twist. The announcement coincides with the 10th anniversary of Donald Trump's first presidential campaign launch. Trump Mobile is positioned as a wireless service that is meant to offer top-notch smartphone connectivity services for American people. One of the highlights of the wireless service plan is "The 47 Plan," priced at $47.45 per month, which gives a nod to Donald Trump being the 47th president of America. According to the official website, the plan includes: Unlimited talk time, messages, and internet Complete device protection 24/7 roadside assistance through Drive America Telehealth services, including virtual medical care, mental health support, and easy ordering and delivery for prescription medications Free International calling to more than 100 countries, including many with American military bases, to help honor the families who are bravely serving in our military abroad No contracts, no credit check Switching to Trump Mobile is simple. Customers would need to make a call to 888-TRUMP45, and they can continue using their current phone when making the transition. Trump Mobile has emphasized making customer support a top priority, promising 24/7 access to real representatives based in the U.S., no bots or automated systems. The company has claimed that T1 Mobile runs on the country's largest 5G networks, which will offer solid coverage across America. In addition to the mobile wireless service, Trump Mobile also announced its upcoming smartphone, the "T1 Phone," which will debut in September. It appears to feature a gold-colored metal case with an American flag etched on it, with triple cameras (iPhone knock-off). The company again highlighted that the device will be designed and built in America and is now available for pre-order.
    • OnePlus reveals five upcoming devices including the Nord 5 by David Uzondu OnePlus has confirmed that its next big product launch will take place on July 8 for its European and Indian markets. The company is dropping a whole slate of new hardware, announcing five different products. These include two new phones, the Nord 5 and its cheaper sibling, the Nord CE5, alongside a OnePlus Pad Lite, a smaller version of the OnePlus Watch 3, and a new pair of OnePlus Buds 4. The whole point of the Nord series, which originally launched back in 2020, has always been to filter some of the company's flagship tech down into phones that do not cost a fortune, and this year looks to be the most aggressive attempt at that yet. The star of this show is the OnePlus Nord 5. It is getting a huge performance upgrade, as it will be the first Nord phone to use a flagship-grade Qualcomm chip, the Snapdragon 8S Gen 3. That is a massive leap from the Snapdragon 7+ Gen 3 that powered the Nord 4 last year. OnePlus also seems serious about keeping it cool, adding an advanced 7,300mm² liquid cooling system and support for faster LPDDR5X RAM. The company even made a point to mention that the phone will handle games like Battlegrounds Mobile India at 90 to 144FPS. OnePlus is also making some interesting design changes. The company claimed that moving back to a vertical camera setup, a clear change from last year's Nord 4 and its horizontal bar, was a practical decision. The new layout supposedly optimizes internal space to fit the beefier chipset and other components. In another departure, the phone's frame will not be metal, unlike what we saw last year with the Nord 4. This change was based on feedback from a global survey where people apparently prioritized simple and practical designs over more premium materials. The Nord 5 will be available in a pale blue finish called "Dry Ice," while the cheaper Nord CE5 gets a "Marble Mist" color. Both new Nord phones will also replace the company's signature Alert Slider with a new customizable Plus Key. According to Celina Shi, CMO at OnePlus Europe, this is a "natural evolution" of the button, allowing it to be programmed for different actions like launching the camera or starting a recording. This key is tied to a new set of AI features called Plus Mind, which can recognize on-screen content and save it as a "memory." For example, it can pull schedule details from a picture of a flyer and add them directly to your calendar. The new Nord phones are joined by a handful of other devices. The OnePlus Watch 3 will now come in a smaller 43mm size for those with smaller wrists, and the company claims it has "exclusive monitoring features" not found on the larger model. The OnePlus Pad Lite is an "affordable," entry-level tablet designed to "work seamlessly" with the company's other hardware. Finally, the OnePlus Buds 4, available in "Zen Green" and "Storm Gray" color options, promise high-quality sound with dual drivers, Hi-Res audio support, and a low-latency mode for gaming. The launch event is set for July 8, where we will get the full specifications and, more importantly, the pricing for everything.
    • ok i have start11 installed on my desktop, how do i enable the start menu to look like win10. In otherwords, how can i right click on a file and next step would be to delete if i want to.   ty
    • High speed Internet is both a blessing and a curse...
  • Recent Achievements

    • 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
    • Explorer
      Legend20 went up a rank
      Explorer
    • One Month Later
      jezzzy earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      631
    2. 2
      ATLien_0
      282
    3. 3
      +FloatingFatMan
      175
    4. 4
      Michael Scrip
      155
    5. 5
      Steven P.
      128
  • Tell a friend

    Love Neowin? Tell a friend!