Welcome to WebmasterWorld Guest from 54.167.153.63

Forum Moderators: open

Message Too Old, No Replies

Problem with javascript in netscape

   
10:42 am on Jul 18, 2002 (gmt 0)

10+ Year Member



Ive got a javascript in my head section which does some work based on data pulled out of a cgi script. I am trying to place this into the webpage with another javascript at the insertion point which uses a function call to get the data. So basically the script in the head takes some variables and joins them all up in a document.write. This is then called from the other script. This works fine in IE but Netscape seems to have a problem with the document.write being in a separate script. Anyone know how to overcome this?

Cheers

10:55 am on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Can you post the code?
11:02 am on Jul 18, 2002 (gmt 0)

10+ Year Member



Hi Joshie,

It goes like this:

This is the script in the head:

function displayBanner(){
var imageURL=image;
var linkURL=link;
writeImage(linkURL, imageURL);
}

This is the one in the body:

displayBanner();
function writeImage (linkURL, imageURL){
document.write('<a href="'+linkURL+'"><img src="'+imageURL+'" border="0" width="125" height="125">');

}

Cheers

11:16 am on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Is
displayBanner()
called before the
writeImage()
function is written in the source?

Do you know what the error is? (type javascript: into the address bar just after the error occured).

edit>>DOH! I can see that your displayBanner() function is called before the writeImage function exists and think this may be the cause of your problems...
can you try:

function writeImage()
{
...
}
displayBanner();

11:22 am on Jul 18, 2002 (gmt 0)

10+ Year Member



I tried that but thats not it. I think my function names may be a little misleading. The displaybanner function assigns values to the variables based on values taken from the cgi. The writeImage function takes these values and concatenates them into a hyperlinked img. It works great for IE but netscape doesnt output anything, and also doesnt suggest there are any errors. Confusing huh!!
11:30 am on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Is there a reason you have this in 2 different functions and not something like this?

function displayBanner(){
var imageURL=image;
var linkURL=link;
document.write('<a href="'+linkURL+'"><img src="'+imageURL+'" border="0" width="125" height="125">');
}

11:34 am on Jul 18, 2002 (gmt 0)

10+ Year Member



Hi Sinner, thanks for chipping in. Funny you should say that, thats what I started with, but I wondered if that could be the problem so I changed it - but it still didnt work.

Cheers

12:05 pm on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Robber, I just did a local test page with just the one function. Just had the image and link URLs directly in the function and not from a cgi. And it worked perfectly well (NS 4.7 and NS7.0 preview), so maybe the problem is in you cgi?
12:10 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



Thanks for the test sinner - I think you might be right. I just did a similar test except pulled the data out of a diferent cgi and it seemed to work fine. Seems to be reading another part of the cgi when in Netscape even though I've got an exit statement in their - but I guess thats another problem now - I best bury my head in a book.

Cheers

12:37 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



Does anyone know if Netscape has a problem with putting a cgi as the src of a javascript?

edit>>
Just in case anyone is following this - netscape seemed to have a problem with the cgi script. The cgi was outputting under a javascript mime header as part of a subroutine but netscape was trying to read the whole cgi for some reason (no idea why). So I put that sub into its on cgi doc and it works fine now.

12:58 pm on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Netscape would have no way of knowing the JS came from CGI, the CGI is just delivering *normal but dynamic* text source to the browser.

Maybe you could show us some of the generated source (with the CGI output)or stickymail me the URL.

1:11 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



Im just trying to upload it to a public server so you can take a look - trouble is, its broken in IE now!! I'll let you know when we're up and running.

Cheers

1:34 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



I think I know what the problem is, but I dont really know why I get it. In the cgi I have a part that checks the referer, this is both for security and to tell the script what to do depending on who the referer is. I think that in netscape this part is breaking down so the sub with the javascript stuff in it isnt executing - hence why I get my variable being undefined.

Does Netscape have a problem with HTTP_REFERER?

2:31 pm on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Personally I wouldn't rely on the HTTP_REFERER as, just looking in my logs I see total nonsense all the time.

I don't know but maybe NS4 doesn't pass the referer to file in the <script src="cgi" ... />, perhaps a QueryString could solve your problem, eg:

<script src="cgi-bin/myfile.pl?mode=js" ... />

2:49 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



Thats an idea, I guess the only problem is that people could manipulate the script easier then. I had figured that if I used the HTTP_REFERER then I could verify that all requests to the cgi were from a page on my site. Perhaps its not the best way, I'll give your suggestion a go.

edit>>> Oh, and BTW, its not just NS4, NS^ does exactly the same. I tried just printing the referer and its empty for both.

Cheers

3:04 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



Finally, I have cracked what the problem is - and it seems so simple now. I think Netscape only tracks the HTTP_REFERER if someone actually clicks a link - not if the url is say an img or javascript src. Well that explains it. Just tested this with a simple text link and the HTTP_REFERER is tracked in IE and NS so that would appear to be the problem.

Hope someone finds that useful!

Cheers

5:16 pm on Jul 18, 2002 (gmt 0)

WebmasterWorld Senior Member tedster is a WebmasterWorld Top Contributor of All Time 10+ Year Member



That's very useful. It may explain some long-standing strangeness for me. Time to go digging.

Thanks!

5:52 pm on Jul 18, 2002 (gmt 0)

10+ Year Member



No problem tedster, Im glad all my problems are of some use. You never know, I'll probably post another one tomorrow!!

Cheers

 

Featured Threads

Hot Threads This Week

Hot Threads This Month