我觉得这应该很简单,但我找不到答案。我需要知道如何从iframe内部访问iframe的名称。我尝试了类似于这样的代码,但它不起作用。
<iframe name="thename">
<script type="text/javascript">
alert(parent.name);
</script>
</iframe>
我觉得这应该很简单,但我找不到答案。我需要知道如何从iframe内部访问iframe的名称。我尝试了类似于这样的代码,但它不起作用。
<iframe name="thename">
<script type="text/javascript">
alert(parent.name);
</script>
</iframe>
我更喜欢的是一组答案:
// window.frameElement Gets IFrame element which document inside
window.frameElement.getAttribute("Name");
它可以在IE7+,Mozilla和Chrome上运行
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 访问权限)。如果不可用,可以参考 https://dev59.com/l1HTa4cB1Zd3GeqPTKKP#4098384 进行备选方案。 - bobincewindow.frameElement
在iframe中返回null
,因此我找到了解决方法。
1.您需要在iframe的src URL中设置哈希值。
<iframe name="tim" href="2.html#your-hash"></iframe>
2. 在 iframe 中,您可以使用以下代码获取此哈希值:
<script type="text/javascript">
var hash = window.location.hash;
</script>
一个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>
Note I'm using parent.document.function()
there.
类似这样的代码应该可以运行:
parent.document.getElementById('idhere').name;
你需要使用父元素,然后通过id、Name等获取元素,再访问name属性。
因此,你的代码应该像这样:
<iframe name="thename">
<script type="text/javascript">
var iframeName = parent.document.getElementById('idhere').name;
</script>
</iframe>
Window.frameElement
- dakab