By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,442 Members | 1,332 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,442 IT Pros & Developers. It's quick & easy.

** IE5, IE6 and NETSCAPE COMPATIBILITY PROBLEM **

P: n/a
Good morning all from italy,

i have probably a compatibility problem with a html/javascript page.
The aim of the code of the file test.htm you find here following (copy the
3 files in the
same directory) is to change the content of a layer, created with the
<div...> tag, with an external text (clicking over an hiperlink) or with the
result of a <form...> submition. The solution (I haven't been able to find
anyone else) is to use a hidden <iframe...> as temporary container of the
text request or the form aswer, and then take its content with javascript
functions and copy it in the layer. It work, but just with IE 6. I tried
with IE 5, but it doesn't work. It don't know with Netscape. Somebody know
where is the problem and if I can do in a different manner? Thank you very
much,

Federico.
***************
this is the file test.htm
*****************

<!-- saved from url=(0022)http://internet.e-mail -->
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if
((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight;
onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH)
location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_setTextOfLayer(objName,x,newText) { //v4.01
if ((obj=MM_findObj(objName))!=null) with (obj)
if (document.layers) {document.write(unescape(newText));
document.close();}
else innerHTML = unescape(newText);
}
function showText(){
theText = window.textFile.document.body.innerHTML;
MM_setTextOfLayer('Layer1','',theText)
}
//-->
</script>
</head>
<html>

<body>
<div id="Layer1" style="position:absolute; left:218px; top:120px;
width:205px; height:134px; z-index:1"></div>
<form>
<iframe id="textFile" name="textFile" style="display:none"
onLoad="showText()"></iframe>
<input type=button value=Hallo onClick="window.textFile.location =
'testo.txt'">
</form>
<form action="script.php" method="post" target="textFile"><input
name="testo" type="text"><input value="submit html test"
type="submit"></form>
<p>&nbsp;</p>
<p onClick="window.textFile.location = 'testo.txt'"><u><font
color="#0000FF">test</font></u>
</p>
</body>
</html>
-----------------------------------

*************************
this is the file script.php
***************************

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="CP_ACP"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<? echo("this is a test: $testo"); ?>
</body>
</html>

----------------------------------------

*****************
this is the file testo.txt
*******************

this is a test file!!!

Jul 20 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a

"Federico Bari" <fe********@tiscali.it> wrote in message
news:bj**********@lacerta.tiscalinet.it...
| Good morning all from italy,
|
| i have probably a compatibility problem with a html/javascript page.
| The aim of the code of the file test.htm you find here following (copy
the
| 3 files in the
| same directory) is to change the content of a layer, created with the
| <div...> tag, with an external text (clicking over an hiperlink) or with
the
| result of a <form...> submition. The solution (I haven't been able to find
| anyone else) is to use a hidden <iframe...> as temporary container of the
| text request or the form aswer, and then take its content with javascript
| functions and copy it in the layer. It work, but just with IE 6. I tried
| with IE 5, but it doesn't work. It don't know with Netscape. Somebody know
| where is the problem and if I can do in a different manner? Thank you very
| much,

Will work fine in IE4+ guaranteed. I built a cottage industry out of hidden
IFrames and updating Div's in such a fashion. It can work with NS6/Mozilla
and Opera as well, but may require slight variations in your script. I
don't have the time to wade through all of that. You might post an abridged
version...

|
| Federico.
|
|
| ***************
| this is the file test.htm
| *****************
|
| <!-- saved from url=(0022)http://internet.e-mail -->
| <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
| <html>
| <head>
| <title>Untitled Document</title>
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
| <script language="JavaScript" type="text/JavaScript">
| <!--
| function MM_reloadPage(init) { //reloads the window if Nav4 resized
| if (init==true) with (navigator) {if
| ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
| document.MM_pgW=innerWidth; document.MM_pgH=innerHeight;
| onresize=MM_reloadPage; }}
| else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH)
| location.reload();
| }
| MM_reloadPage(true);
|
| function MM_findObj(n, d) { //v4.01
| var p,i,x; if(!d) d=document;
| if((p=n.indexOf("?"))>0&&parent.frames.length) {
| d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
| if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++)
| x=d.forms[i][n];
| for(i=0;!x&&d.layers&&i<d.layers.length;i++)
| x=MM_findObj(n,d.layers[i].document);
| if(!x && d.getElementById) x=d.getElementById(n); return x;
| }
|
| function MM_setTextOfLayer(objName,x,newText) { //v4.01
| if ((obj=MM_findObj(objName))!=null) with (obj)
| if (document.layers) {document.write(unescape(newText));
| document.close();}
| else innerHTML = unescape(newText);
| }
| function showText(){
| theText = window.textFile.document.body.innerHTML;
| MM_setTextOfLayer('Layer1','',theText)
| }
| //-->
| </script>
| </head>
| <html>
|
| <body>
| <div id="Layer1" style="position:absolute; left:218px; top:120px;
| width:205px; height:134px; z-index:1"></div>
| <form>
| <iframe id="textFile" name="textFile" style="display:none"
| onLoad="showText()"></iframe>
| <input type=button value=Hallo onClick="window.textFile.location =
| 'testo.txt'">
| </form>
| <form action="script.php" method="post" target="textFile"><input
| name="testo" type="text"><input value="submit html test"
| type="submit"></form>
| <p>&nbsp;</p>
| <p onClick="window.textFile.location = 'testo.txt'"><u><font
| color="#0000FF">test</font></u>
| </p>
| </body>
| </html>
| -----------------------------------
|
|
|
| *************************
| this is the file script.php
| ***************************
|
| <%@LANGUAGE="JAVASCRIPT" CODEPAGE="CP_ACP"%>
| <html>
| <head>
| <title>Untitled Document</title>
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
| </head>
|
| <body>
|
| <? echo("this is a test: $testo"); ?>
| </body>
| </html>
|
| ----------------------------------------
|
|
|
| *****************
| this is the file testo.txt
| *******************
|
| this is a test file!!!
|
|
|
|
|
Jul 20 '05 #2

P: n/a
hank you ... i supposed iframe was supported by IE4+ ... but that html code
doesn't work with IE5, as i tried in 2 PC just this morning!!! So maybe it
could be a javascript problem with IE5??
Jul 20 '05 #3

P: n/a

"Federico Bari" <fe********@tiscali.it> wrote in message
news:bj**********@lacerta.tiscalinet.it...
| hank you ... i supposed iframe was supported by IE4+ ... but that html
code

our welcome. Yes it is.

| doesn't work with IE5, as i tried in 2 PC just this morning!!! So maybe it

Problem with the code!

| could be a javascript problem with IE5??
|
|

Er. A javascript problem with you script that happens to break IE5. Yes.
I think you have a handle on it. Lets see what you've got here...

Good morning all from italy,

i have probably a compatibility problem with a html/javascript page.
The aim of the code of the file test.htm you find here following (copy the
3 files in the
same directory) is to change the content of a layer, created with the
<div...> tag, with an external text (clicking over an hiperlink) or with the
result of a <form...> submition. The solution (I haven't been able to find
anyone else) is to use a hidden <iframe...> as temporary container of the
text request or the form aswer, and then take its content with javascript
functions and copy it in the layer. It work, but just with IE 6. I tried
with IE 5, but it doesn't work. It don't know with Netscape. Somebody know
where is the problem and if I can do in a different manner? Thank you very
much,

Federico.
***************
this is the file test.htm
*****************

<!-- saved from url=(0022)http://internet.e-mail -->
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if
((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight;
onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH)
location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_setTextOfLayer(objName,x,newText) { //v4.01
if ((obj=MM_findObj(objName))!=null) with (obj)
if (document.layers) {document.write(unescape(newText));
document.close();}
else innerHTML = unescape(newText);
}
function showText(){
theText = window.textFile.document.body.innerHTML;
MM_setTextOfLayer('Layer1','',theText)
}
//-->
</script>
Note 1. MM spells MacroMedia (and big trouble)

Lord this stuff is from Adobe GoLive! (or similar ilk) I would scrap all of
this code to start with...

</head>
<html>

<body>
<div id="Layer1" style="position:absolute; left:218px; top:120px;
width:205px; height:134px; z-index:1"></div>

Note 2. z-index? Needed?

Why the z-index spec. on the first element on the page?

<form>
<iframe id="textFile" name="textFile" style="display:none"
onLoad="showText()"></iframe>
<input type=button value=Hallo onClick="window.textFile.location
='testo.txt'">

Note 3. This could be the problem!

window.textFile? That's not right. You want to use location.replace
anyway.

if (document.getElementById)
getElement = new Function("id", "return document.getElementById(id)")
else if (document.all)
getElement = new Function("id", "return document.all[id]")

var e = getElement("textFile")

if (e.location.replace)
e.location.replace("testo.txt");
else
e.location.href = "testo.txt"

</form>
<form action="script.php" method="post" target="textFile"><input
name="testo" type="text"><input value="submit html test"
type="submit"></form>

Note 4. Mozilla, Netscape, Opera and others will open new windows when this
form is posted. Assign the target programmatically only after determining
that it is IE4+, You could use the IE conditional comments to handle IE5+
with a default of checking for (document.all && !document.getElementById)
to handle IE4.

<p>&nbsp;</p>

Note 5. I really hate to see stuff like this.

<p onClick="window.textFile.location = 'testo.txt'"><u><font
color="#0000FF">test</font></u></p>
Note 6. WTF!

No no no no no no no no. What's all this then? Where to start? How about:

<p><script type="text/javascript">document.write("<a onclick='changeThe
Location()'>test<\/a>")</script></p>

where changeTheLocation is a function that executes the previous example
code about changing the Iframe location.

</body>
</html>
^^^
This is okay.

*************************
*************************
this is the file script.php
***************************
Which seems to do nothing. Doesn't matter at this point though.

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="CP_ACP"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<? echo("this is a test: $testo"); ?>
</body>
</html>

----------------------------------------

*****************
this is the file testo.txt
*******************

this is a test file!!!
What is this one for? Your php script should output javascript that updates
elements on its parent page.

Jul 20 '05 #4

P: n/a
thank you all! Will try your suggestions! ^_^

Federico.
Jul 20 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.