2015-04-23 6 views
0

У меня есть страница на www.domain.com и другая страница на sub.domain.com. sub.domain.com будет отображаться на www.domain.com в iframe. Я пытаюсь динамически вычислять высоту этого iframe на основе содержимого iframe.Доступ запрещен contentWindow iframe IE9

<iframe onload="calcHeight();" id="iframe" src="sub.domain.com"></iframe> 

<script type="text/javascript"> 
function calcHeight() 
{ 
    //find the height of the internal page 
    document.domain = 'domain.com'; 
    var the_height=parent.document.getElementById('iframe').contentWindow.document.body.scrollHeight +25; 
    //change the height of the iframe 
    parent.document.getElementById('iframe').height=the_height; 
} 
</script> 

Сайт src содержит документ.domain = 'domain.com';

Он работает над всеми основными браузерами, кроме IE9, что дает мне доступ, запрещенный на javascript выше. Все прочитанные мной решения динамически добавляют строку document.domain в источник iframe, но, как сказано, это уже в моем статическом источнике iframe.

Неправильно?

-edit-

Основываясь на предположении, теперь у меня есть это на www.domain.com

<script type="text/javascript"> 
document.domain="domain.com"; 
</script> 

<iframe style="border:0px;width:100%;" onload="calcHeight();" id="iframe" src="sub.domain.com"></iframe> 

<script> 
// IE hack 
var ua = window.navigator.userAgent; 
var msie = ua.indexOf("MSIE"); 
if (msie > -1) { 
var source = "javascript:'<script>window.onload=function(){document.write(\\'<script>document.domain=\\\"" + document.domain + "\\\";<\\\\/script>\\');document.close();return \\\"+url+\\\";};<\/script>'"; 
$('#iframe').attr("src", source); 
} 
// End IE hack 

function calcHeight() 
{ 
//find the height of the internal page 
var the_height=parent.document.getElementById('iframe').contentWindow.document.body.scrollHeight +25; 
//change the height of the iframe 
parent.document.getElementById('iframe').height=the_height; 
} 
</script> 

-edit 2- на основе последних замечаний я теперь этот

<script type="text/javascript"> 
document.domain="domain.com"; 
url="sub.domain.com"; 
function calcHeight() 
{ 
//find the height of the internal page 
var the_height=parent.document.getElementById('iframe').contentWindow.document.body.scrollHeight +25; 
//change the height of the iframe 
parent.document.getElementById('iframe').height=the_height; 
} 
</script> 

<iframe style="border:0px;width:100%;" onload="calcHeight();" id="iframe" src="javascript:'<script>window.onload=function(){document.write(\'<script>docum‌​ent.domain=\'domain.com\';<\\/script>\');document.close();return \'+url+\';};</script>'"></iframe> 

Теперь я больше не вижу исходную страницу.

+0

У меня нет понятия, что вы имеете в виду со вторым замечанием? –

ответ

1

Извините, но потому, что я была такая же проблема, и я решил таким образом я могу попросить вас попробовать его именно таким образом:

var url = $('#iframe').attr("src"); 
if (isMSIE() == true) { 
     url = "javascript:'<script>window.onload=function(){document.write(\\'<script>document.domain=\\\"" + document.domain + "\\\";<\\\\/script>\\');document.close();return \\\"+url+\\\";};<\/script>'"; 
    } 

$('#iframe').attr("src", url); 

Проблема, кажется, связано с IE и то, что я сделал, заменить URL-ти динамического JavaScript, что изменить домен и вернуть URL в IFRAME в основном, что случилось с моим клиентом был, что IFrame оказалось слишком мало, что это motivatoin я использовал этот подход:

Кроме того IFRAME из IE источник:

<iframe width="300" class="vytmn-frame" id="iframe" src="javascript:'<script>window.onload=function(){document.write(\'<script>document.domain=\&quot;localhost\&quot;;<\\/script>\');document.close();return \&quot;+url+\&quot;;};</script>'" frameborder="0" scrolling="yes" horizontalscrolling="no" verticalscrolling="yes"></iframe> 

Другими словами, моя проблема заключалась в том, чтобы i разрешить полноразмерный iframe, потому что сам iframe был показан браузером слишком мало и так невидим.

Извините, и я надеюсь, что на этот раз я дал вам, что я сделал. Неупонятен расчет скорости: у вас нет доступа к документу внутри iframe. Еще раз извините.

+0

Итак, где в приведенных выше строках я должен добавить это? –

+0

на верхней странице, где у вас есть iframe, поэтому изменить атрибут url, если под IE. На прошлой неделе я решил подобную проблему. Как вы можете заметить, я установил document.domain и вернул URL-адрес iframe. Я попросил вас только попробовать. Надеюсь, ты решишь такую ​​проблему, как я. – gaetanoM

+0

Еще одна проблема, см. Мое редактирование выше –

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