从源文档中获取iframe名称

时间:2014-11-10 17:15:58

标签: javascript html iframe

我在父页面中有以下iframe:

<html>
....
<iframe src="child.html" name="variedName" id="variedId"></iframe>
...
</html>

有没有办法让child.html的Javascript获得包含它的name值或iframe的id

我需要这个,因为我想在iframe中使用child.html

在父页面中添加一些标记window.parent

3 个答案:

答案 0 :(得分:3)

嗯,快速而肮脏的解决方案是为iframe提供相同的名称和ID,并在子页面中访问iframe,如下所示:

parent.document.getElementById(window.name);

答案 1 :(得分:2)

是的,但仅限于页面共享相同的来源。

您可以执行以下操作:

var parent_window = window.parent;
iframes = parent_window.document.getElementsByTag("iframe");
if (iframes[0].window === window) {
    // found it
}

if语句可能需要进行一些调整,但我认为这有效。

答案 2 :(得分:0)

除了提供的解决方案,您可以使用:

parent.document.getElementsByName(window.name)[0];

文档:https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByName

或者这个:

parent.document.querySelector('iframe[src="'+location+'"]');

文档:https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector

或者这个“frankencode”:

(function(){
    for(var i=0,frames=parent.frames,l=frames.length;i<l;i++)
    {
        if(frames[i].window===window)
        {
            return frames[i].window;
        }
    }
})();

如果你有jQuery:

$('iframe[name="'+window.name+'"]',parent); //method 1

$('iframe[src="'+location+'"]',parent); //method 2

$('iframe',parent).filter(function(){ //a different method
    return this.window===window;
}).eq(0);

还有更多方法......