目标父div包含iframe中的iframe

时间:2012-03-26 17:59:46

标签: javascript html iframe

所以基本上我有这样的东西

<div class="iframe-holder">
    <span></span>
    <iframe src="iframe.html" width="200" height="200"
</div>
<div class="iframe-holder">
    <span></span>
    <iframe src="iframe.html" width="200" height="200"
</div>
<div class="iframe-holder">
    <span></span>
    <iframe src="iframe.html" width="200" height="200"
</div>
<script>
    function where_am_i(iframe_parent_div,msg){
        $(iframe_parent_div).find('span').html(msg);
    }
</script>   

然后在我的iframe-holder.html中我基本上有这个

<a href="#" id="msg">Show Message In Parent Div</a>
<script>
    //i want to basically imp
    $('msg').click(function(event){
        event.preventDefault();
        var iframe_parent_div=???;//how do I get this?
        parent.where_am_i(iframe_parent_div,'This is where this iframe is');
    });     
</script>

所以基本上我的问题是如何定位iframe实例的父div(div.iframe-holder)我点击“显示消息”按钮?这甚至可能吗?

我知道我可以通过源发送一个带索引的变量,即iframe.html?index = 0表示第一个iframe.html?index = 1表示第二个等等但是这对我来说不是一个可行的解决方案因为在iframe中会有很多导航到不同的页面,所以传递到所有页面,索引不是一个选项。

2 个答案:

答案 0 :(得分:9)

执行:

var iframe_parent_div = window.frameElement ? window.frameElement.parentNode : null;

答案 1 :(得分:1)

您可以在父文档中编写一个函数,该函数将iframe的名称作为参数,然后从那里获取iframe-holder div。这样的事情就足够了:

父文档中的代码

var findIframeHolder = function (name) {
    var $frame = $('iframe[name="' + name + '"]');
    var $frameParent = $frame.parent();
};

IFrame中用于调用父函数的代码

parent.findIframeHolder(window.name);