PDA

View Full Version : New window scripting problems


LottaLava
12-18-2002, 05:34 PM
Hello folks, i´m trying to create a window using window.open( ) method, but inside my script has some tags that i need to build the window layout, until nothing in special but when IExplorer or Mozilla reach a line with tag </scritpt> inside the text the browser think that i´m closing my main and real tag <script>. Take a loook and try by yourselves!

<script language="JavaScript">
function efetuarLogin( )
{
var frm = document.frmMain;
var frmLogin = "";
var windowFeatures = "'";

windowFeatures = windowFeatures.concat( "top = 0, " );
windowFeatures = windowFeatures.concat( "left = 0, " );
windowFeatures = windowFeatures.concat( "toolbar = no, " );
windowFeatures = windowFeatures.concat( "location = no, " );
windowFeatures = windowFeatures.concat( "directories = 0, " );
windowFeatures = windowFeatures.concat( "status = no, " );
windowFeatures = windowFeatures.concat( "menubar = no, " );
windowFeatures = windowFeatures.concat( "width = 790, " );
windowFeatures = windowFeatures.concat( "height = 545, " );
windowFeatures = windowFeatures.concat( "scrollbars = yes'" );

frmLogin = frmLogin.concat( "<html>" );
frmLogin = frmLogin.concat( "<head>" );
frmLogin = frmLogin.concat( "<title>PanFinance</title>" );
frmLogin = frmLogin.concat( " <link rel ='STYLESHEET'" );
frmLogin = frmLogin.concat( " type ='text/css'" );
frmLogin = frmLogin.concat( " href ='main.css'>" );
frmLogin = frmLogin.concat( " <script language='JavaScript'>" );
frmLogin = frmLogin.concat( " function onLoad_init( ) {" );
frmLogin = frmLogin.concat( " var frm = document.frmMain;" );
frmLogin = frmLogin.concat( " frm.hdnLogin.value = '" + frm.edLogin.value + "';" );
frmLogin = frmLogin.concat( " frm.hdnSenha.value = '" + frm.edSenha.value + "';" );
frmLogin = frmLogin.concat( " frm.submit( );" );
frmLogin = frmLogin.concat( " }" );
frmLogin = frmLogin.concat( " </script>" );
frmLogin = frmLogin.concat( "</head>" );
frmLogin = frmLogin.concat( "<body onLoad='onLoad_init( );'>" );
frmLogin = frmLogin.concat( " <form name='frmMain'" );
frmLogin = frmLogin.concat( " <input name='hdnLogin'" );
frmLogin = frmLogin.concat( " type='hidden'>" );
frmLogin = frmLogin.concat( " <input name='hdnSenha'" );
frmLogin = frmLogin.concat( " type='hidden'>" );
frmLogin = frmLogin.concat( " </form>" );
frmLogin = frmLogin.concat( "</body>" );
frmLogin = frmLogin.concat( "</html>" );

var wnd = window.open( "", "blah", windowFeatures );

wnd.document.write( frmLogin );
}
</script>

beetle
12-18-2002, 06:14 PM
A fairly common problem, with an interesting workaround. Also, all those concat() methods are a bit of overkill (IMHO). I'd also recommend switching the way you use single and double quotes.frmLogin += '<html>';
frmLogin += '<head>';
frmLogin += '<title>PanFinance</title>';
frmLogin += '<link rel ="STYLESHEET"';
frmLogin += ' type ="text/css"';
frmLogin += ' href ="main.css">';
frmLogin += ' <scr' + 'ipt language="JavaScript">';
frmLogin += ' function onLoad_init( ) {';
frmLogin += ' var frm = document.frmMain;';
frmLogin += ' frm.hdnLogin.value = "' + frm.edLogin.value + '";';
frmLogin += ' frm.hdnSenha.value = "' + frm.edSenha.value + '";';
frmLogin += ' frm.submit(;';
frmLogin += ' }';
frmLogin += ' </scr' + 'ipt>';
frmLogin += '</head>';
frmLogin += '<body onLoad="onLoad_init(;">';
frmLogin += ' <form name="frmMain"';
frmLogin += ' <input name="hdnLogin"';
frmLogin += ' type="hidden">';
frmLogin += ' <input name="hdnSenha"';
frmLogin += ' type="hidden">';
frmLogin += ' </form>';
frmLogin += '</body>';
frmLogin += '</html>'; Note: there are other ways of doing what you are trying here. For example, why create a script and function to populate the form elements when you are already create the entire page with script?frmLogin += ' <input name="hdnLogin"';
frmLogin += ' value="' + frm.edLogin.value + '"';
frmLogin += ' type="hidden">'; Or, you could use a regular GET method form that submits to a popup window and then retrieve the values from the query-string. If you are interested in that method, let me know.