Open Bug 170840 Opened 22 years ago Updated 2 months ago

Problem with javascript command window.open()

Categories

(Core :: DOM: Core & HTML, defect, P5)

x86
Windows 98
defect

Tracking

()

People

(Reporter: peter_rosenberg, Unassigned)

Details

Attachments

(3 files, 1 obsolete file)

Hi

I added the code of a html-document to this message. This html-document works 
fine with IE 6.x. The document shows a short list. Its possible to select an 
item from this list (mouseclick). Afterwards I want to open a new window. It 
works with the IE 6.x but with NS I always get an error in the debugger-window:

Error: uncaught exception: [Exception... "Component returned failure code: 
0x80004005 (NS_ERROR_FAILURE) [nsIDOMJSWindow.open]"  nsresult: "0x80004005 
(NS_ERROR_FAILURE)"  location: "JS frame :: file:///D:/temp/document.htm :: 
action :: line 49"  data: no]

I have no idea to solve this problem. In my sample code you can search the word 
Problem then you will find the part of the code whitch will not work. If you 
use the command alert('hi there'); then everything it's okay. If you use the 
command window.open() at this position then you always get an error in the 
error browser and you can see no action in the normal browser-window.

Please help. I dont understand that. It works in the IE 6.0 but I want to use 
NS! :-)

Here the code of the document:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta name="DC.Rights" content="Copyright (C) Peter Rosenberg, Beinwil bei Muri 
(Aargau), Switzerland"><title>business_instruments</title>

<script type="text/javascript">

<!--

	// Copyright (c) Peter Rosenberg, Switzerland
	// Default values
	var window_x = 100;
  var window_y = 50;
  var window_width = 600;
  var window_height = 400;
  var htmString_Blank 
= "<html><head><title>bds@Net</title></head><body></body></html>";
  var htmString_Header = htmString_Blank;
  var htmString_Left = htmString_Blank;
  var htmString_Main = htmString_Blank;
  var htmString_Control = htmString_Blank;
  var htmString_Footer = htmString_Blank;
  var htmString_TopLeft = htmString_Blank;
  var htmString_BottomLeft = htmString_Blank;
	var htmString_rowBackgroundColorNormal = "#FFFFFF";
	var htmString_rowBackgroundColorFocus = "#CADFE6";
	var vMode;
	var vWindowClose;
	var vWindowNew;
	var vWindowHref;
	var vWindowName;
	var vWindowParameters;
	var vIdValue;

	//Needed tags to insert code
	htmString_Main='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n<head>\n<meta http-
equiv="content-type" content="text/html; charset=ISO-8859-1">\n<meta 
name="DC.Rights" content="Copyright (C) Peter Rosenberg, Beinwil bei Muri 
(Aargau), Switzerland">\n<style type="text/css">\nbody {font:normal 10pt Arial; 
border:0px; margin:0px}\ntable {border:0px; table-layout:auto; border-
collapse:collapse; empty-cells:show; font:normal 10pt Arial; cursor:default;}
\ntd {border:1px solid #CCCCCC; padding-left:2px; padding-right:2px; padding-
top:1px; padding-bottom:1px;}\n</style>\n</head>\n<body>\n<TABLE 
style="width:400px"></tr>\n<tr id=1 onClick="javascript:parent.action(\'1\',\'0
\',\'0\',\'bds_blu_userManagement.php?
fn=usersDelete&sp=userDelete\',\'newwindow\',\'depend=yes,menubar=no,height=180,
width=300\',\'1\');" onMouseover="javascript:parent.rowMark(1,1);" 
onMouseout="javascript:parent.rowMark(0,1);">\n<td style="width:200px; white-
space:nowrap; text-align:left;">System</td>\n<td style="width:170px; white-
space:nowrap; text-align:left;">10a8de3b23a64668</td>\n</tr>\n<tr id=2 
onClick="javascript:parent.action(\'1\',\'0\',\'0
\',\'bds_blu_userManagement.php?
fn=usersDelete&sp=userDelete\',\'newwindow\',\'depend=yes,menubar=no,height=180,
width=300\',\'5\');" onMouseover="javascript:parent.rowMark(1,2);" 
onMouseout="javascript:parent.rowMark(0,2);">\n<td style="width:200px; white-
space:nowrap; text-align:left;">Sysop</td>\n<td style="width:170px; white-
space:nowrap; text-
align:left;">091d5231638149e9</td>\n</tr>\n</table>\n</body>\n</html>\n';htmStri
ng_Left='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n<head>\n<meta http-
equiv="content-type" content="text/html; charset=ISO-8859-1">\n<meta 
name="DC.Rights" content="Copyright (C) Peter Rosenberg, Beinwil bei Muri 
(Aargau), Switzerland">\n<style type="text/css">\nbody {font:normal 10pt Arial; 
border:0px; margin:0px}\ntable {border:0px; table-layout:auto; border-
collapse:collapse; empty-cells:show; font:normal 10pt Arial; cursor:default;}
\ntd {border:1px solid #CCCCCC; padding-left:2px; padding-right:2px; padding-
top:1px; padding-bottom:1px;}\n</style>\n</head>\n<body>\n<table>\n</tr>\n<tr 
id=1 onClick="javascript:parent.action();" 
onMouseover="javascript:parent.rowMark(1,1);" 
onMouseout="javascript:parent.rowMark(0,1);">\n<td style="width:30px; white-
space:nowrap; text-align:right;">1</td>\n</tr>\n<tr id=2 
onClick="javascript:parent.action();" onMouseover="javascript:parent.rowMark
(1,2);" onMouseout="javascript:parent.rowMark(0,2);">\n<td style="width:30px; 
white-space:nowrap; text-
align:right;">5</td>\n</tr>\n</table>\n<br><br><br></body>\n</html>\n';htmString
_Header='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n<head>\n<meta http-
equiv="content-type" content="text/html; charset=ISO-8859-1">\n<meta 
name="DC.Rights" content="Copyright (C) Peter Rosenberg, Beinwil bei Muri 
(Aargau), Switzerland">\n<style type="text/css">\nbody {font:normal 10pt Arial; 
border:0px; margin:0px}\ntable {border:0px; table-layout:auto; border-
collapse:collapse; empty-cells:show; font:normal 10pt Arial; cursor:default;}
\ntd {border:1px solid #CCCCCC; padding-left:2px; padding-right:2px; padding-
top:1px; padding-bottom:1px;}\n</style>\n</head>\n<body style="margin-
right:30px"><TABLE style="width:400px"><tr>\n<td style="width:200px; white-
space:nowrap; text-align:left;">Benutzername</td>\n<td style="width:170px; 
white-space:nowrap; text-
align:left;">Passwort</td>\n</tr>\n</table>\n</body>\n</html>\n';htmString_Foote
r='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n<head>\n<meta http-
equiv="content-type" content="text/html; charset=ISO-8859-1">\n<meta 
name="DC.Rights" content="Copyright (C) Peter Rosenberg, Beinwil bei Muri 
(Aargau), Switzerland">\n<style type="text/css">\nbody {font:normal 10pt Arial; 
border:0px; margin:0px}\ntable {border:0px; table-layout:auto; border-
collapse:collapse; empty-cells:show; font:normal 10pt Arial; cursor:default;}
\ntd {border:1px solid #CCCCCC; padding-left:2px; padding-right:2px; padding-
top:1px; padding-bottom:1px;}\n</style>\n</head>\n<body style="text-
align:right; margin:0px;"><form><input type="button" value="(S)chliessen" 
accesskey="s" onClick="javascript:parent.close();"></form></body>\n</html>\n';

	window_x=(screen.width/2)-350;window_y=(screen.height/2)-
250;window_width=700;window_height=500;



	function action
(mode,windowClose,windowNew,windowHref,windowName,windowParameters,idValue)
	{
 		if (mode=='1')
		{
			if (windowNew=='1')
			{
			}else{
// Problem
// alert('test');
window.open("xx","xx");
			}

				vMode = mode;
				vWindowClose = windowClose;
				vWindowNew = windowNew;
				vWindowHref = windowHref;
				vWindowName = windowName;
				vWindowParameters = windowParameters;
				vIdValue = idValue;
		}
		if (windowClose=='1')
		{
			window.close();
		}
	}

	function rowMark(mode,id)
	{
		switch(mode)
		{
			case 1:
				parent.main.document.getElementById
(id).style.backgroundColor = htmString_rowBackgroundColorFocus;
				parent.left.document.getElementById
(id).style.backgroundColor = htmString_rowBackgroundColorFocus;
				break;
			case 0:
				parent.main.document.getElementById
(id).style.backgroundColor = htmString_rowBackgroundColorNormal;
				parent.left.document.getElementById
(id).style.backgroundColor = htmString_rowBackgroundColorNormal;
				break;
		}
	}  

  function window_init(){
    window.resizeTo(window_width,window_height);
    window.moveTo(window_x,window_y);
  }

  function window_setFocus(){
    window.focus();
  }

  function frameHeader_init(){
    return htmString_Header;
  }

  function frameMain_init(){
    return htmString_Main;
  }

  function frameControl_init(){
    return htmString_Control;
  }

  function frameFooter_init(){
    return htmString_Footer;
  }

  function frameLeft_init(){
    return htmString_Left;
  }

  function frameTopLeft_init(){
    return htmString_TopLeft;
  }

  function xframeTopLeft_init(){
    return htmString_TopLeft;
  }

  function frameBottomLeft_init(){
    return htmString_BottomLeft;
  }

  function synchronizeIE(){
    this.header.scroll(this.main.document.body.scrollLeft,0);
    this.left.scroll(0,this.main.document.body.scrollTop);
    this.footer.scroll(this.main.document.body.scrollLeft,0);
  }

  function synchronizeNS(){
    this.header.scroll(window.main.pageXOffset,0);
    this.left.scroll(0,window.main.pageYOffset);
    this.footer.scroll(window.main.pageXOffset,0);
  }


  window_init();
  window_setFocus();

  function sync_init(){
    bType = (document.all) ? 1 : 0;
    if (bType){
      window.setInterval("synchronizeIE()",5);
    } else {
      window.setInterval("synchronizeNS()",5);
    }
  }

//-->

</script></head>
<frameset rows="25,*,24,0"><frameset cols="30,*"><frame 
src="javascript:parent.frameTopLeft_init();" name="topLeft" noresize="noresize" 
scrolling="no" border="0" frameborder="0" framespacing="0"><frame 
src="javascript:parent.frameHeader_init();" name="header" noresize="noresize" 
scrolling="no" border="0" frameborder="0" framespacing="0"></frameset><frameset 
cols="30,*"><frame src="javascript:parent.frameLeft_init();" name="left" 
noresize="noresize" scrolling="no" border="0" frameborder="0" 
framespacing="0"><frame src="javascript:parent.frameMain_init();" name="main" 
noresize="noresize" scrolling="yes" border="0" frameborder="0" 
framespacing="0"></frameset><frameset cols="30,*"><frame 
src="javascript:parent.frameBottomLeft_init();" name="bottomLeft" 
noresize="noresize" scrolling="no" border="0" frameborder="0" 
framespacing="0"><frame src="javascript:parent.frameFooter_init();" 
name="footer" noresize="noresize" scrolling="no" border="0" frameborder="0" 
framespacing="0" onload="javascript:sync_init();"></frameset><frame 
src="javascript:parent.frameControl_init();" name="control" noresize="noresize" 
scrolling="no" border="0" frameborder="0" framespacing="0"></frameset>
<noframes>
<body>
<p>
frames are not supported
</p>
</body>
</noframes></html>
Confirming bug with Mozilla trunk binary 20020924xx on WinNT.
Load the HTML testcase, click on the rows, and you get the 
reported errors in the JavaScript Console

These are DOM errors; reassigning to DOM Level 0 -

Assignee: rogerl → jst
Status: UNCONFIRMED → NEW
Component: JavaScript Engine → DOM Level 0
Ever confirmed: true
QA Contact: pschwartau → desale
I found a solution for the problem. The window.open() command doesn't work if I
use the command without the prefix http:// or file:// in the first parameter.
The error message don't tell me that if this prefix is missing... only some
cryptical values ;-). But anyway - now it works. I'm not sure wheter this is
only a workarround or the real solution. Maybe it's recommended to make further
investigations. But for me this bug is solved.

By the way: The NS V 7.0 is very good!!! For me it's very important that my
web-applications support the NS.
This is the main page.	This page calls additem.html
On both NS 7.0 and Mozilla 1.2b ( Mozilla/5.0 (Windows; U; Windows NT 5.0;
en-US; rv:1.2b) Gecko/20021016 ), I am getting a similar problem with window.open.

I have a URL example:  http://www.edmeades.ca/test/dhtmltest.html

I found the issue when I was attempting to allow a user to populate a table from
another page "popped" by a window.open.  If the user adds a product from the
"floating" window to the table in the calling page, and the user then clicks on
the camera icon on the newly added row to display the image, the window.open
fails.  In my example, if the user adds a product from the table on the same
page to the "current order" table, and then clicks on the camera icon on the
newly added row, the window.open succeeds.

I have found that if I supply the full http:// URL in the window.open, then it
works.

This functionality does work with IE 6.0 SP1
This page is called by dhtmltest.html via window.open.	Using this is causing
the window.open on the main page to not work once a row has been added to a
table on the main page.
Attachment #104670 - Attachment description: Example of failure of Window.Open → Example of failure of Window.Open (dhtmltest.html)
Attachment #104670 - Attachment mime type: text/html → text/plain
Attachment #104671 - Attachment description: Pop -up window associated with dhtmltest.html → Pop -up window associated with dhtmltest.html (additmes.html)
Attachment #104671 - Attachment mime type: text/html → text/plain
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030113

I have a similar result when I try to open a URL with an invalid scheme (i.e.
"dispatch://" instead of "http://"). In this situation, the error code is
0x804b0012. I don't consider this an error, but perhaps a nicer explanation
would be possible.

I can provide more information if needed.
Mass-reassigning bugs to dom_bugs@netscape.com
Assignee: jst → dom_bugs
I'm seeing this same problem on Windows 2000 and XP Pro with version 0.8. I have
the tabbrowser extention installed on both machines.
Assignee: general → nobody
QA Contact: desale → general
https://bugzilla.mozilla.org/show_bug.cgi?id=1472046

Move all DOM bugs that haven’t been updated in more than 3 years and has no one currently assigned to P5.

If you have questions, please contact :mdaly.
Priority: -- → P5
Severity: normal → S3
Attachment #9384276 - Attachment is obsolete: true
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: