Javascript window.open fails in IE

G

gleverett

I have been searching the 'Net, and I can't find the right solution
here. I am writing some PHP pages that utilize some Javascript. The
script works in Mozilla/Netscape, but fails in IE. I don't know if
it's the Javascript or the PHP that is causing the problem. I started
with an example in a book and added on.

The script I'm using is:

<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
<!--
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record Viewer", "toolbar=no,width=<?php
echo $new_win_width ?>,height=<?php echo new_win_height
?>,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
NEW_WIN.location.href = url;
}

//-->
</SCRIPT>

(I added some line break to make it readable The NEW_WIN line is all
on one line.)

The PHP variables get added correctly, and the two calls from the PHP
program are similar to:

<a
href="javascript:eek:pen_window('$PHP_SELF?action=action1');\">Action1</a>

or an

echo "<button
onClick=\"javascript:eek:pen_window('$PHP_SELF?action=insert_record');\" >
Insert new record</button>";

These work fine in Netscape/Mozilla, but in IE, after clickng a bunch
of times, I get "Domain not found". I've replaced PHP_SELF with the
full URL to test, and it still fails. I know that the scripting is
turned on in IE becuase I can go to example sites and the window.open
function works.

Any ideas as to what's going on here?
 
R

Randy Webb

(e-mail address removed) said the following on 9/19/2005 4:11 PM:
I have been searching the 'Net, and I can't find the right solution
here. I am writing some PHP pages that utilize some Javascript. The
script works in Mozilla/Netscape, but fails in IE. I don't know if
it's the Javascript or the PHP that is causing the problem. I started
with an example in a book and added on.

The script I'm using is:

<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
<!--
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record Viewer", "toolbar=no,width=<?php

IE is known not to handle window names with spaces in them real well.
Change it to "RecordViewer" or "Record_Viewer"
echo $new_win_width ?>,height=<?php echo new_win_height
?>,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
NEW_WIN.location.href = url;
}

//-->
</SCRIPT>

Post the code that gets sent to the browser, not the PHP code that
generates it. And why are you opening a blank window and then setting
it's href property? Just specify the URL in the window.open call:

window.open(url,"Record Viewer",.....)
<a
href="javascript:eek:pen_window('$PHP_SELF?action=action1');\">Action1</a>

http://jibbering.com/faq/#FAQ4_24
 
M

McKirahan

I have been searching the 'Net, and I can't find the right solution
here. I am writing some PHP pages that utilize some Javascript. The
script works in Mozilla/Netscape, but fails in IE. I don't know if
it's the Javascript or the PHP that is causing the problem. I started
with an example in a book and added on.

The script I'm using is:

<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
<!--
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record Viewer", "toolbar=no,width=<?php
echo $new_win_width ?>,height=<?php echo new_win_height
?>,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
NEW_WIN.location.href = url;
}

//-->
</SCRIPT>

(I added some line break to make it readable The NEW_WIN line is all
on one line.)

The PHP variables get added correctly, and the two calls from the PHP
program are similar to:

<a
href="javascript:eek:pen_window('$PHP_SELF?action=action1');\">Action1</a>

or an

echo "<button
onClick=\"javascript:eek:pen_window('$PHP_SELF?action=insert_record');\" >
Insert new record</button>";

These work fine in Netscape/Mozilla, but in IE, after clickng a bunch
of times, I get "Domain not found". I've replaced PHP_SELF with the
full URL to test, and it still fails. I know that the scripting is
turned on in IE becuase I can go to example sites and the window.open
function works.

Any ideas as to what's going on here?


I tested with this variation:

<html>
<head>
<title>js_php.htm</title>
<script type="text/javascript">
function open_window(url) {
var cfg = "width=<?php echo $new_win_width ?>,"
cfg += "height=<?php echo new_win_height ?>,";
cfg += "scrollbars=yes,resizable=yes"
var win = window.open ("","Record Viewer",cfg);
win.location.href = url;
}
</script>
</head>
<body onload="open_window('http://www.google.com/')">
</body>
</html>

and it didn't work for me under IE (5.5) either.

My guess is that IE doesn't interpret inline php.
 
R

Randy Webb

McKirahan said the following on 9/19/2005 5:56 PM:
I tested with this variation:

<html>
<head>
<title>js_php.htm</title>
<script type="text/javascript">
function open_window(url) {
var cfg = "width=<?php echo $new_win_width ?>,"
cfg += "height=<?php echo new_win_height ?>,";
cfg += "scrollbars=yes,resizable=yes"
var win = window.open ("","Record Viewer",cfg);
win.location.href = url;
}
</script>
</head>
<body onload="open_window('http://www.google.com/')">
</body>
</html>

and it didn't work for me under IE (5.5) either.

My guess is that IE doesn't interpret inline php.

Since php is processed on the server (with an exception and that is a
plugin that allows php to be clientside), whether IE interprets it or
not is totally dependent on whether PHP is enabled on the server. Try
changing your window name to no spaces, remove the PHP code, and see
what happens.

--
Randy
comp.lang.javascript FAQ - http://jibbering.com/faq & newsgroup weekly
Answer:It destroys the order of the conversation
Question: Why?
Answer: Top-Posting.
Question: Whats the most annoying thing on Usenet?
 
G

Gérard Talbot

(e-mail address removed) a écrit :
I have been searching the 'Net, and I can't find the right solution
here. I am writing some PHP pages that utilize some Javascript. The
script works in Mozilla/Netscape, but fails in IE. I don't know if
it's the Javascript or the PHP that is causing the problem. I started
with an example in a book and added on.

The script I'm using is:

<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">

language attribute is deprecated.

HTML comment is not needed here.
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record Viewer", "toolbar=no,width=<?php

Right here. The window name should be a one string without blank space.

http://developer.mozilla.org/en/docs/DOM:window.open

echo $new_win_width ?>,height=<?php echo new_win_height
?>,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no")

If the windowFeatures string list is not empty, then you only need to
set the features which will be on, enabled.

;
NEW_WIN.location.href = url;

I never understood why people code like that. Why not define the url in
the window.open() call?
}

//-->
</SCRIPT>

(I added some line break to make it readable The NEW_WIN line is all
on one line.)

The PHP variables get added correctly, and the two calls from the PHP
program are similar to:

<a
href="javascript:eek:pen_window('$PHP_SELF?action=action1');\">Action1</a>


"javascript:" pseudo-protocol is definitely not recommendable.

http://jibbering.com/faq/#FAQ4_24

http://developer.mozilla.org/en/doc...D.22javascript:window.open.28....29.22_....3E
"
* "javascript:" pseudo-links become dysfunctional when javascript
support is disabled or inexistent. Several corporations allow their
employees to surf on the web but under strict security policies: no
javascript enabled, no java, no activeX, no Flash. For various reasons
(security, public access, text browsers, etc..), about 8% to 12% of
users on the web surf with javascript disabled.
* "javascript:" links will interfere with advanced features in
tab-capable browsers: eg. middle-click on links, Ctrl+click on links,
tab-browsing features in extensions, etc.
* "javascript:" links will interfere with the process of indexing
webpages by search engines.
* "javascript:" links also interfere with assistive technologies
and several web-aware applications (e.g. PDA).
* Protocol scheme "javascript:" will be reported as an error by
link validators and link checkers.
"

Gérard
 
G

Gérard Talbot

McKirahan a écrit :
var win = window.open ("","Record Viewer",cfg);

var win = window.open (url, "RecordViewer", cfg);

will work without a problem.


win.location.href = url;
}
</script>
</head>
<body onload="open_window('http://www.google.com/')">


Well, first of all, don't try on an onload event.

</body>
</html>

and it didn't work for me under IE (5.5) either.

Remove the blank space between the word Record and Viewer.

http://developer.mozilla.org/en/docs/DOM:window.open

Gérard
 
G

G-Man

Thanks to all the suggestions. It turned to be the space in the window
name.

To be complete, here is the code that is sent to the browser (minus the

PHP, and after the change to an "_" in the window name):

<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
<!--
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record_Viewer",
"toolbar=no,width=850,height=575,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
NEW_WIN.location.href = url;
}

//-->
</SCRIPT>

I made an example page to test an inline href javascript call like I
listed in the code above, and a full url. Those continued to fail in
IE, but after replacing the space with an underscore, all of the links
worked. I can't belive it's something that simple as a space.

Thanks! This has been racking my brain for about a week!
 
M

Mick White

G-Man said:
Thanks to all the suggestions. It turned to be the space in the window
name.

To be complete, here is the code that is sent to the browser (minus the

PHP, and after the change to an "_" in the window name):

<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
<!--
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record_Viewer",
"toolbar=no,width=850,height=575,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
NEW_WIN.location.href = url;
}

//-->
</SCRIPT>
You have ignored some good advice, here's how I would do it:
<SCRIPT TYPE="text/javascript">
function open_window(url) {
var NEW_WIN = null;//questionable
NEW_WIN =
window.open(url,"Record_Viewer","width=850,height=575,scrollbars,resizable");
}
</SCRIPT>
 
G

Gérard Talbot

G-Man a écrit :
Thanks to all the suggestions. It turned to be the space in the window
name.

To be complete, here is the code that is sent to the browser (minus the

PHP, and after the change to an "_" in the window name):

<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">

Again, why do you use language? language is deprecated.

Why do you need to comment the HTML code? It's not needed anymore.
function open_window(url) {
var NEW_WIN = null;
NEW_WIN = window.open ("", "Record_Viewer",
"toolbar=no,width=850,height=575,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
NEW_WIN.location.href = url;

Why not insert the url in the 1st parameter of the window.open()
function? instead of adding another instructions just to do that...
You do not need to set the config parameters to no once there is at
least 1 parameter defined.
You set the height to 575 but this will not be carried out by a large
majority of browsers (even users with a 1024x768 scr.res.) because there
won't be enough height on the user workarea for applications. So, your
code will trigger error correction mechanisms in MSIE 6, Mozilla-based
browsers and most likely other browsers.

Thanks! This has been racking my brain for about a week!


Everything was already mentioned at this page:

http://developer.mozilla.org/en/docs/Gecko_DOM_Reference

along with best recommendations, examples, etc..

Gérard
 
G

Gérard Talbot

Mick White a écrit :
<SCRIPT TYPE="text/javascript">
function open_window(url) {
var NEW_WIN = null;//questionable

You're absolutely correct. Declaring NEW_WIN as a local variable is
useless and pointless. It should be a global variable.
NEW_WIN =
window.open(url,"Record_Viewer","width=850,height=575,scrollbars,resizable");

}
</SCRIPT>

Gérard
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top