2014-11-10 2 views
2

У меня после фрейма в родительской странице:Получить имя Iframe из исходного документа

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

Есть ли способ, что сделать Javascript из child.html, чтобы получить значение name или id из фрейма, который включал его ?

мне это нужно, потому что я хочу, чтобы добавить некоторую разметку вокруг фрейма, который будет включать child.html в родительской странице с помощью window.parent

ответ

2

Ну, быстрое и грязное решение было бы дать IFrame такое же имя и id и получить доступ к iframe на дочерней странице:

parent.document.getElementById(window.name); 
+1

Или вы можете использовать 'parent.document.getElementsByName (window.name) [0];' (Documentation : https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByName) –

+0

Хорошая точка! Это определенно немного более элегантно, чем мое решение. –

2

Да, но только если страницы имеют одинаковое происхождение.

Вы можете сделать что-то вроде:

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

if заявления может потребоваться некоторые настройки, но я думаю, что это работает.

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); 

и многие другие способы ...

Смежные вопросы