View Full Version : How to move array declaration to external .js file???

05-23-2007, 01:36 PM
1) Script Title: random iframe content

2) Script URL (on DD): http://www.dynamicdrive.com/dynamicindex17/randomiframe.htm

3) Describe problem: I need to move the array declaration to an easily modifiable small external .js file that I can include instead of needing to recode the page every time it is modified, which could be often. Eventually, I will generate th js page by a cron php job. I've tried the usual method:
<script type='text/javascript' src='Lib/scripts/randomcontent.js'></script>
and this totally does not work. The random content script is embedded in the body, not the head (script language="JavaScript1.2), and I think that has something to do with it. BTW, I'm using this to display random images, and I've added another associated array for comments written into a named div on the page - all of this works perfectly, but ONLY when the arrays are in the body. There is something here that I don't know.....

05-23-2007, 03:48 PM
An external script will pull its resources relative to the page that it is on so, it is best to use the absolute path to any files mentioned in it.

Other than that, just make sure you that are following these guidelines:

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 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:



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

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

Note: With this particular array, it should be able to be declared in the head as long as nothing in the body part of the script contradicts it.

05-23-2007, 06:38 PM
Thanks for your reply. I went through your checklist and things still didn't add up. I had changed a big bunch of things while on a coding streak at 3:30 a.m, and after your post, thought I'd try Firebug (which I don't really like too much, but.....). And strangely, no javascript appeared in the editor. I had split out different things, added others, and put the code in the wrong place. I feel like a var dumbA=new Array(). Thanks for your reply, I found the error and it was me.