Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to force IE to reload javascript?

I'm using IE 8 on Vista, and everytime I change a javascript file and then start debugging, I have to hit Ctrl+F5 to have it reload my javascript. Is there any way to make it automatically reload javascript when I start debugging, but not lose the performance gains when just browsing the net?

Yeah yeah I know you probably don't like IE, but keep in mind the question isn't "What's the best browser?".

like image 550
Max Schmeling Avatar asked May 15 '09 01:05

Max Schmeling


People also ask

How do I force JavaScript to update?

Obviously, on a support call, we can simply inform them to do a ctrl F5 refresh to ensure that they get the up-to-date files from the server, but it would be preferable to handle this before that time.

Why JavaScript is not working in Internet Explorer?

Internet Explorer When the "Internet Options" window opens, select the Security tab. On the "Security" tab, make sure the Internet zone is selected, and then click on the "Custom level..." button. In the Security Settings – Internet Zone dialog box, click Enable for Active Scripting in the Scripting section.

How do hard refresh in IE11?

Internet Explorer:Hold the Ctrl key and press the F5 key. Or, hold the Ctrl key and click the Refresh button.


2 Answers

Add a string at the end of your URL to break the cache. I usually do (with PHP):

<script src="/my/js/file.js?<?=time()?>"></script> 

So that it reloads every time while I'm working on it, and then take it off when it goes into production. In reality I abstract this out a little more but the idea remains the same.

If you check out the source of this website, they append the revision number at the end of the URL in a similar fashion to force the changes upon us whenever they update the javascript files.

like image 174
Paolo Bergantino Avatar answered Sep 22 '22 12:09

Paolo Bergantino


Paolo's general idea (i.e. effectively changing some part of the request uri) is your best bet. However, I'd suggest using a more static value such as a version number that you update when you have changed your script file so that you can still get the performance gains of caching.

So either something like this:

<script src="/my/js/file.js?version=2.1.3" ></script> 

or maybe

<script src="/my/js/file.2.1.3.js" ></script> 

I prefer the first option because it means you can maintain the one file instead of having to constantly rename it (which for example maintains consistent version history in your source control). Of course either one (as I've described them) would involve updating your include statements each time, so you may want to come up with a dynamic way of doing it, such as replacing a fixed value with a dynamic one every time you deploy (using Ant or whatever).

like image 23
Alconja Avatar answered Sep 24 '22 12:09

Alconja