0

I have these three script files

<script type="text/javascript" src="script/inbox.js"></script>
<script type="text/javascript" src="script/news.js"></script>
<script type="text/javascript" src="script/friend.js"></script>

I am loading these files dynamically when user clicks certain links.

for example when user clicks inbox inbox.js is loaded and in similar manner.

All these files inbox.js,news.js,friend.js all have code that handles scroll event. Now even when user has switched to news from inbox still the handler for scroll in news is also getting called. I need to ensure that the handler for only that tab is callled when user is at particular tab.

Some directions that can be proceeded in to solve the problem is -

  1. Dynamically unload the other script file from the document.
  2. Unbind the scroll handler for the other tabs.
  3. Some how I can assign ID or class to these script file and unload them.

Please help me, which of these would be better way.

2 Answers 2

1
function removejscssfile(filename, filetype){
 var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none"      
 var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none"     
 var allsuspects=document.getElementsByTagName(targetelement)
 for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for     matching elements to remove
    if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
        allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by     calling parentNode.removeChild()
     }
 }

removejscssfile("inbox.js", "js") //remove all occurences of "somescript.js" on page

This function can be used to remove js or css any type of script from document dynamically..

Sign up to request clarification or add additional context in comments.

Comments

0

There is no way to "dynamically unload" a script after it has been loaded. You can remove the DOM element (assign an ID to it and call removeChild on it's parent node) but the executed code is still working, e.g. all created variables still exist and event handlers set up in the script will still work.

You will need to unbind all handlers from the script if you only have event handling in it. Otherwise, you could consider introducing some global flag which you check in your script code and only perform certain functionality when the flag is set.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.