access iframe name from inside iframe

0 votes
asked Feb 12, 2010 by ilia-choly

I though this would be simple enough but I can't find the answer. I need to know how I can access an iframe's name from within said iframe. I was trying something like this but it's not working.

<iframe name="thename">
  <script type="text/javascript">
    alert(parent.name);
  </script>
</iframe>

5 Answers

0 votes
answered Feb 12, 2010 by todd-moses

Something like this should work:

parent.document.getElementById('idhere').name;

You have to use the parent and then get the element either byId, Name, etc... then access the name property.

So your code should be like:

<iframe name="thename">
 <script type="text/javascript">
   var iframeName = parent.document.getElementById('idhere').name;
 </script>
</iframe>
0 votes
answered Feb 12, 2010 by bdl

Well, an IFRAME element shouldn't contain anything, it's targeting another document. So using a SCRIPT tag inside an IFRAME doesn't make alot of sense. Instead, use the SCRIPT inside the called document, e.g.

iframe_caller.html:

<html>
 <body>
  <iframe id="theIframe" name="theIframe" src="iframe_doc.html"></iframe>
 </body>
</html>

iframe_doc.html:

<html>
 <body>
  <script type="text/javascript">
    var iframes= parent.document.getElementsByTagName("iframe");
    document.write(iframes[0].getAttribute("id"));
  </script>
 </body>
</html>

Note I'm using parent.document.function() there.

0 votes
answered Feb 12, 2010 by bobince

You were nearly right. Setting the name attribute on a frame or iframe sets the name property of the frame's global window object to that string. (Not parent, which refers to the window of the document that owns the frame.)

So unless some other script has deliberately changed the name, it's as simple as:

1.html:
<iframe name="tim" href="2.html"></iframe>

2.html:
<script type="text/javascript">
    alert(window.name); // tim
</script>
0 votes
answered Feb 14, 2012 by kirlisakal

There is a combination of answers I prefer:

// window.frameElement Gets IFrame element which document inside
window.frameElement.getAttribute("Name");

It works on IE7+, Mozilla & Chrome

0 votes
answered Sep 15, 2017 by payter

in some cases window.frameElement returns null in iframe, so i figured workaround for it.

1. you need to set hash in src url of iframe

<iframe name="tim" href="2.html#your-hash"></iframe>

2. in iframe you can get this hash with

<script type="text/javascript">
    var hash = window.location.hash;
</script>
Welcome to Q&A, where you can ask questions and receive answers from other members of the community.
Website Online Counter

...