【问题标题】:access iframe name from inside iframe从 iframe 内部访问 iframe 名称
【发布时间】:2011-01-15 23:27:38
【问题描述】:

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

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

【问题讨论】:

    标签: javascript html iframe


    【解决方案1】:

    这样的事情应该可以工作:

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

    您必须使用父元素,然后通过 ID、Name 等获取元素...然后访问 name 属性。

    所以你的代码应该是这样的:

    <iframe name="thename">
     <script type="text/javascript">
       var iframeName = parent.document.getElementById('idhere').name;
     </script>
    </iframe>
    

    【讨论】:

    • 如果您不知道 ID 或 iframe 位于单独的域中怎么办?
    • 然后您必须使用 getElementsByTagName 并按某些标准迭代结果。
    【解决方案2】:

    嗯,一个 IFRAME 元素不应该包含任何东西,它的目标是另一个文档。因此,在 IFRAME 中使用 SCRIPT 标签没有多大意义。相反,在被调用的文档中使用 SCRIPT,例如

    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>
    

    请注意,我在那里使用parent.document.function()

    【讨论】:

      【解决方案3】:

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

      所以除非其他脚本故意更改名称,否则很简单:

      1.html:
      <iframe name="tim" href="2.html"></iframe>
      
      2.html:
      <script type="text/javascript">
          alert(window.name); // tim
      </script>
      

      【讨论】:

      • 访问 iframe 的属性怎么样?例如,如果它有一些数据集属性?
      • @AlexStack: window.frameElement 从父文档中获取指向您自己的元素,然后您可以在其上使用getAttribute(假设您具有 SOP 访问权限)。请参阅stackoverflow.com/questions/4097870/… 了解不可用的后备
      【解决方案4】:

      我更喜欢多种答案:

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

      它适用于 IE7+、Mozilla 和 Chrome

      【讨论】:

      【解决方案5】:

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

      1.你需要在 iframe 的 src url 中设置 hash

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

      2。在 iframe 中,您可以使用

      获取此哈希
      <script type="text/javascript">
          var hash = window.location.hash;
      </script>
      

      【讨论】:

        猜你喜欢
        • 2013-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多