我在父页面中有以下iframe:
<html>
....
<iframe src="child.html" name="variedName" id="variedId"></iframe>
...
</html>
有没有办法让child.html
的Javascript获得包含它的name
值或iframe的id
?
我需要这个,因为我想在iframe中使用child.html
window.parent
答案 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);
还有更多方法......