从iframe内部访问iframe名称

Ili*_*oly 27 html javascript iframe

我虽然这很简单,但我找不到答案.我需要知道如何从iframe中访问iframe的名称.我正在尝试这样的事情,但它不起作用.

<iframe name="thename">
  <script type="text/javascript">
    alert(parent.name);
  </script>
</iframe>
Run Code Online (Sandbox Code Playgroud)

bob*_*nce 52

你几乎是对的.name在a上设置属性frameiframename框架的全局window对象的属性设置为该字符串.(不是parent,它指的是拥有框架的文档的窗口.)

因此,除非其他一些脚本故意更改名称,否则它就像下面这样简单:

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

2.html:
<script type="text/javascript">
    alert(window.name); // tim
</script>
Run Code Online (Sandbox Code Playgroud)

  • @AlexStack:`window.frameElement`从你自己引用的父文档中获取元素,然后你就可以`getAttribute`(假设你有SOP访问权限).有关后备的信息,请参见http://stackoverflow.com/questions/4097870/jquery-access-iframe-id-from-iframe-content/4098384#4098384 (11认同)
  • 如何访问iframe的属性?例如,如果它有一些数据集attr? (5认同)

efi*_*rat 52

我喜欢的答案组合如下:

// window.frameElement Gets IFrame element which document inside
window.frameElement.getAttribute("Name");
Run Code Online (Sandbox Code Playgroud)

它适用于IE7 +,Mozilla和Chrome

  • 我喜欢这个答案而不是接受的答案,因为它引用了实际的iframe元素. (3认同)

Pay*_*teR 5

在某些情况下,会在iframe中window.frameElement返回null,因此我想出了解决方法。

1.您需要在iframe的src url中设置哈希

<iframe name="tim" href="2.html#your-hash"></iframe>
Run Code Online (Sandbox Code Playgroud)

2.在iframe中,您可以使用

<script type="text/javascript">
    var hash = window.location.hash;
</script>
Run Code Online (Sandbox Code Playgroud)