PDA

View Full Version : Problems moving JavaScript to an external page



marineweb
09-03-2006, 09:54 PM
I am trying to move my JavaScript, which controls my main menu dynamics, from my heading area to an external page. I copied my JavaScript to a new page called menu_data.htm and uploaded it to the same root folder as my page.

I replaced my JavaScript on my page in the heading with:

<script language="Javascript" type="text/javascript" src="menu_data.htm"></script>

Please see http://www.marineweb.com/preview/aym/about_ustest1.html for two things, my <script> command above in my header and the main menu requiring the JavaScript for it to work.

Please see my external JavaScript page at

http://www.marineweb.com/preview/aym/menu_data.htm

When I leave my JavaScript in my header, my menu works fine:) . When I tried to move to an external page, it does not work at all:mad: .

Thanks,

Roger

marineweb
09-03-2006, 09:56 PM
My script command is

<script language="Javascript" type="text/javascript" src="menu_data.htm"></script>

Not

<script language="Javascript" type="text/javascript" src="menu_data.js"></script>

Sorry,

Roger

jscheuer1
09-03-2006, 10:52 PM
Technically, the extension for the external file shouldn't really matter but, by convention - unless it is a server side generated script, .js is used. You have also failed to remove the HTML script tags from your external file and left in useless (actually harmful in some cases) 'hiding' comments. You should never use this or the language attribute at all (generally harmless but, a killer in external javascript files):

language="JavaScript"

anywhere, except for very specific reasons that almost never apply. Follow these guidelines and things should work out much better:


Use a text editor to save the script, call it 'file_name.js' where 'file_name' can be any valid file name of your choosing. Substitute the name of your external .js file for some.js in the below:


<script src="some.js" type="text/javascript"></script>

Common problems arise when:

1 ) The script file is not in the directory specified. In the above example it must be in the same directory as the page(s) that use it. Below, it can be in the scripts directory off of the root of a domain:


<script src="http://www.somedomain.com/scripts/some.js" type="text/javascript"></script>

2 ) Opening, closing and/or 'hiding' tags are left in the external file. This means that you must strip:
<script>
<!--and
//-->
</script>and any of their many variations from the beginning and end of the external file.

3 ) The external call (<script src="some.js" type="text/javascript"></script>) is not inserted into the page at the correct spot. The external call must be inserted at the same place on the page where the script was/would have been.

4 ) Paths to other files (if) used by the script are no longer valid due to its location. This is only a problem if the external script is kept in a different directory than the page it was working on when it was an internal script. To correct this, use absolute paths inside the script. Absolute path examples:


http://www.somedomain.com/images/button.gif

http://www.somedomain.com/~mysitename/index.html

5 ) Inappropriately combining two or more scripts into one external file. Usually external scripts can be combined if one knows enough about scripting to do so properly. Even then it is possible to overlook something.

A rule of thumb when testing is, if it won't work on the page, it won't work as an external file either.

One other thing, if this is a DD script or any script that requires the credit remain for legal use, include the credit in the on page call, ex:


<script src="some.js" type="text/javascript">
/***********************************************
* IFrame SSI script II- Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
* Visit DynamicDrive.com for hundreds of original DHTML scripts
* This notice must stay intact for legal use
***********************************************/
</script>

Make sure to retain all the 'decorations', as these include begin and end javascript comment delimiters without which the script won't function.

marineweb
09-03-2006, 11:38 PM
All is working fine now.

Thanks a million,

Roger