【发布时间】:2011-01-15 23:27:38
【问题描述】:
虽然这很简单,但我找不到答案。我需要知道如何从所述 iframe 中访问 iframe 的名称。我正在尝试这样的事情,但它不起作用。
<iframe name="thename">
<script type="text/javascript">
alert(parent.name);
</script>
</iframe>
【问题讨论】:
标签: javascript html iframe
虽然这很简单,但我找不到答案。我需要知道如何从所述 iframe 中访问 iframe 的名称。我正在尝试这样的事情,但它不起作用。
<iframe name="thename">
<script type="text/javascript">
alert(parent.name);
</script>
</iframe>
【问题讨论】:
标签: javascript html iframe
这样的事情应该可以工作:
parent.document.getElementById('idhere').name;
您必须使用父元素,然后通过 ID、Name 等获取元素...然后访问 name 属性。
所以你的代码应该是这样的:
<iframe name="thename">
<script type="text/javascript">
var iframeName = parent.document.getElementById('idhere').name;
</script>
</iframe>
【讨论】:
嗯,一个 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()。
【讨论】:
你几乎是对的。在frame 或iframe 上设置name 属性会将框架的全局window 对象的name 属性设置为该字符串。 (不是parent,它指的是拥有该框架的文档的窗口。)
所以除非其他脚本故意更改名称,否则很简单:
1.html:
<iframe name="tim" href="2.html"></iframe>
2.html:
<script type="text/javascript">
alert(window.name); // tim
</script>
【讨论】:
window.frameElement 从父文档中获取指向您自己的元素,然后您可以在其上使用getAttribute(假设您具有 SOP 访问权限)。请参阅stackoverflow.com/questions/4097870/… 了解不可用的后备
我更喜欢多种答案:
// window.frameElement Gets IFrame element which document inside
window.frameElement.getAttribute("Name");
它适用于 IE7+、Mozilla 和 Chrome
【讨论】:
在某些情况下,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>
【讨论】: