WesternUnion - Credit Card Consolidation - Credit Cards - eHarmony Coupon - Loans

PDA

View Full Version : Why my frame doesn't work on Safari 3.0.4?


joecool2005
Feb 5th 2008, 9:43 am
Hi,

I want to build a simple frame.
The following code works fine on IE6 and IE7 but doesn't work on Safari 3.0.4.
It showed me this error message on Safari 3.0.4.
"TypeError: Value undefined (result of expression top.frames["toolbar"].doSomething2) is not object."
Why?

Plz help
Thx
Joe

default.htm

<frameset id="frameset1" rows="119,*" name="frameset1" border="0" frameSpacing="0" frameBorder="no">
<frame name="toolbar" id="toolbar" src="button.htm" marginheight="0" marginwidth="0" scrolling="no" NORESIZE>
<frame name="top_main" id="top_main" src="button2.htm" marginheight="0" marginwidth="0" NORESIZE>
</frameset>


button.htm

<html>

<head>
<script language="JavaScript">
function doSomething2(){
alert("this is my document");
}
</script>
</head>
<body>
my page
</body>

</html>


button2.htm

<HTML>
<script language="JavaScript">
try{

top.frames["toolbar"].doSomething2()
}
catch(e){alert(e);}
</script>
<body>
button2<br />
</body>
</HTML>

ToddMicheau
Feb 5th 2008, 9:58 am
Here try this:

button2.htm

<HTML>
<script language="JavaScript">
try{
document.getElementById('toolbar').contentWindow.doSomething2();
}
catch(e){alert(e);}
</script>
<body>
button2<br />
</body>
</HTML>

joecool2005
Feb 5th 2008, 10:59 am
Thanks for your help.

I've tried it and it did not work

On IE I see "[object Error]"
On Safari 3.0.4 I see "TypeError: Null value"

So this line is not good.
document.getElementById('toolbar').contentWindow.doSomething2();

Other suggestion?

Thx
Joe

ToddMicheau
Feb 5th 2008, 12:09 pm
Oops, I'm sorry, I should have tested that before posting. The only way I could get this running on Safari is to explicitly set the function:


<html>
<head>
<script language="JavaScript">
top.frames['toolbar'].doSomething = function(){
alert("this is my document");
};
</script>
</head>
<body>
my page
</body>
</html>


Though this might now be feasible across site, it works. . . And is cross browser compatible.