Solved

Execute functions in frames from a parent frame

Posted on 2009-05-05
7
416 Views
Last Modified: 2013-11-18
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
Comment
Question by:sunnymock
  • 5
  • 2
7 Comments
 
LVL 10

Expert Comment

by:bugada
ID: 24310223
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
 
LVL 10

Expert Comment

by:bugada
ID: 24310332
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
 
LVL 10

Expert Comment

by:bugada
ID: 24310343
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
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:sunnymock
ID: 24316863
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
 

Author Comment

by:sunnymock
ID: 24316869
It doesn't have to work in IE. Solely firefox would be great.
0
 
LVL 10

Expert Comment

by:bugada
ID: 24320337
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
 
LVL 10

Accepted Solution

by:
bugada earned 305 total points
ID: 24320401
sorry i mentioned a div in the previous message: substitute it with 'iframe' :-)
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

JavaScript can be used in a browser to change parts of a webpage dynamically. It begins with the following pattern: If condition W is true, do thing X to target Y after event Z. Below are some tips and tricks to help you get started with JavaScript …
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
Viewers will get an overview of the benefits and risks of using Bitcoin to accept payments. What Bitcoin is: Legality: Risks: Benefits: Which businesses are best suited?: Other things you should know: How to get started:
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now