2012-06-11 5 views
0

У меня есть страница, индекс, который имеет ниже содержание и IFrame установки:IFrame и общение между ними

индексная страница:

<html> 
<body> 

<iframe src=".." id="leftFrame"></frame> 
<iframe src="mainFrame.html" id="mainFrame"></frame> 

</body> 

</html> 

mainFrame.html:

<div class="hidden" id="hiddenStuff"> 
.... 
</div> 

сейчас в mainFrame я загружаю некоторый контент в скрытый div.

Возможно ли получить этот контент из mainFrame.html и отобразить его в индексе, , который запускается из mainFrame через javascript?

i.e, после загрузки mainFrame, он будет вызывать через javascript родительский iframe для извлечения содержимого #hiddenStuff, а затем отображать его на индексной странице.

ответ

1

Да, возможно, если родительский и mainFrame находятся в одном домене.

Родитель/индекс:

<html> 
<body> 

<script type="text/javascript"> 

function updateContent(content) 
{ 
    $('#content').html(content); 
} 

document.domain = "yourdomain.com"; 

</script> 

<iframe src=".." id="leftFrame"></frame> 
<iframe src="mainFrame.html" id="mainFrame"></frame> 

<div id="content"> </div> 

</body> 

</html> 

MainFrame/ребенок:

<script type="text/javascript"> 

document.domain = "yourdomain.com"; 

$(document).ready(function(){ 

    // on page load, trigger the update 
    var content = $('#hiddenStuff').html(); 

    try 
    { 
     parent.updateContent(content); 
    } 
    catch(e) 
    { 
     // couldn't call the parent, handle the exception 
    } 

}); 

</script> 

<div class="hidden" id="hiddenStuff"> 
.... 
</div> 

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

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