8

My site is setup like this:

<frameset rows="80,*">
    <frame name="top" id="top" src="header.html">
    <frameset id="innerframe" cols="300,*">
        <frame name="nav" src="nav.html">
    </frameset>
</frameset>


In header.html I have:

function fAlert() {
    alert('test');
}

How can I call fAlert() in nav.html?

I tried

var fframe = parent.document.getElementById('top');
fframe.fAlert();

and also

parent.frames.top.fAlert();

but it didnt work (fAlert is undefined).

Any ideas how I can accomplish this?

0

2 Answers 2

8

First off, don't use framesets and frames. Use iframes--frames are deprecated.

Secondly, provide an id for the iframe (or frame, if you must) in order to direct the function call correctly. (You've already pretty much done this, but I'm being methodical.) I wouldn't name it 'top' because 'top' already has a meaning in terms of windows and frames.

From inside the nav frame, parent.insertYourFrameIdHere.fAlert() should work correctly. This assumes two things: 1) The page and the frame contents come from the same domain, and 2) header.html loaded correctly and there were no script errors in it. Script errors or other issues could keep the function from ever being created.

Sign up to request clarification or add additional context in comments.

1 Comment

Unfortunately, the site has been built with framesets/frames and I am unable to change that. I also want to add, that top is a really inconvenient name for a frame. parent.frames[0].fAlert() did the trick.
6

For the html in your question following should work.

window.parent.parent.frames[0].fAlert();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.