所以基本上我有这样的东西
<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中会有很多导航到不同的页面,所以传递到所有页面,索引不是一个选项。
答案 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);