Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 429
  • Last Modified:

Execute functions in frames from a parent frame

Is it possible to call functions that are within html files when they are displayed in frames? I need to call a function containing document.body.clientHeight and clientWidth to get the dimensions of a frame and store them in a file for future purposes. I'm thinking about having an html file with an iframe that contains the html file containing the frame html. From the html file containing the iframe, I would need to call a function in each of the frames inside the iframe. Is this too confusing? the code is provided to show you what the html file inside the iframe would display. As you can see, this html file would display more html files inside frames. From the html files in the frames, there is a function I would like to call from the FRAME HTML. This function returns the height and width of the frame the html file is displayed in.
FRAME HTML
<html>
 
<frameset rows = "3%,82%,15%" frameborder = "yes" noresize="noresize">
<frame src="Ticker.html">
<frameset cols="35%,65%" frameborder = "yes">
<frame src="stuff.html">
<frame src="cursor.html" noresize="noresize">
</frameset>
 
<frameset cols="25%,75%">
<frame src="stuff.html">
<frame src="Ticker.html">
 
</frameset>
</frameset>
</html>

Open in new window

0
sunnymock
Asked:
sunnymock
  • 5
  • 2
1 Solution
 
bugadaCommented:
First give a different ID to each <frame> in the framesets.

To get clientWidth call the instruction from the page containing the iframe, passing the correct frame id instead of "frameID" and the correct iframe name instead of "youriframe".

Restrictions: works in IE only and only all the html pages involved come from the same domain.
document.youriframe.document.getElementById(frameID).document.body.clientWidth

Open in new window

0
 
bugadaCommented:
Reading better your question, I think you have the functions ready in every frames.
The you can use this code to access those functions (in my example every frames contains the function show(), but you can dicriminate on the frame id/name).

Same restrictions as the example above.
      var d = document;
      var f = document.youriframe;
      var f2 = f.document.frames;
         for (var i = 0; i < f2.length; i++) {
               f2[i].show();
         }
      }

Open in new window

0
 
bugadaCommented:
an optimized version ;-)
var f2 = document.youriframe.document.frames;
for (var i = 0; i < f2.length; i++) {
   f2[i].show();
}

Open in new window

0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
sunnymockAuthor Commented:
Sorry, but I forgot to mention that I need it to work in Firefox. Will this last method work in Firefox? Thanks. I haven't tried it yet but I'm sure it'll be what I'm looking for.
0
 
sunnymockAuthor Commented:
It doesn't have to work in IE. Solely firefox would be great.
0
 
bugadaCommented:
This is a version FF /IE compatible, but you have to assign the id = "youriframe" (or whatelse according to the javascript) to the div, because FF doesn't know the document.frames collection.
  <script>
   window.onload = function(e) {
      var oIframe = document.getElementById("youriframe");
      var oDoc = oIframe.contentWindow || oIframe.contentDocument;
      if (oDoc.document) {
          oDoc = oDoc.document;
      }
      var fs = oDoc.getElementsByTagName("frame");
      for (var i = 0; i < fs.length; i++) {
         var fDoc = fs[i].contentWindow || fs[i].contentDocument;
         fDoc.show();
      }
   }
  </script>

Open in new window

0
 
bugadaCommented:
sorry i mentioned a div in the previous message: substitute it with 'iframe' :-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now