Междоменные изменения iframe src

У меня есть приложение, которое содержит iframe. Я могу изменить содержимое iframe, но не всю страницу, например:

<html><head></head>
<body> 
    <iframe>
        <!-- my code -->
    </iframe>
</body></html>

У меня есть требование, в котором мне нужно изменить содержимое iframe на другую страницу (возможно, в другом домене) и вернуться назад. В настоящее время я делаю это следующим образом: Первая страница (она находится внутри панели исполнения iframeApplications):

<html> 
 <head>
    <script type="text/javascript">
function replaceIFrameUrl() {
    var doSubmit = "<c:out value='${param.doSubmit}'/>";
    if (doSubmit == 1) {
        document.forms['testForm'].submit();
    }
    else {
        var adfUrl = "<fuego:fieldValue att='instJs.adfUrl' onlyValue='true'/>";
        var bpmSrc = parent.document.getElementById('executionPanelApplications').src;
        var bpmSrcParams = bpmSrc.split('&');
        var activityId = (bpmSrcParams[1].split('='))[1]; 
        var url = adfUrl +"&actionType=0&activityId="+activityId;
        parent.document.getElementById('executionPanelApplications').src = url;
    }
};

</script>
 </head>
 <body onload="replaceIFrameUrl();">
    <form method="post" id="testForm" name="testForm" />
 </body>
 </html>

Вторая страница (она также должна быть внутри iframe executePanelApplications):

 <script>
   function leave(e) {
      var iframe = parent.parent.document.getElementById("executionPanelApplications");
      iframe.src = url;
   };
 </script>

Если оба сайта находятся на локальном хосте, это работает как шарм. К сожалению, если они находятся в разных доменах - вторая страница открывается в новом окне. Протестировано в т.е. 8. Как я уже сказал, я не могу изменить содержимое страницы, содержащей iframe. Я могу работать только внутри iframe. Мне нужно, чтобы это работало только в ie.

Есть идеи?


person Krzysiek Mejka    schedule 15.11.2011    source источник
comment
Вот почему вам следует избегать уродливого iFrame. Это известное ограничение.   -  person OptimusCrime    schedule 15.11.2011


Ответы (1)


Я бы не стал использовать iframe, потому что есть разные ограничения безопасности (междоменная связь)

Но я думаю, что это может вам помочь: http://softwareas.com/cross-domain-communication-with-iframes

person frank_neff    schedule 15.11.2011
comment
Ну, как я уже сказал, я ничего не могу с этим поделать - первая страница находится в iframe. За всем этим стоит технология Oracle BPM 10g. Я хочу заменить страницу, предоставленную приложением BPM, другим веб-интерфейсом, относительно бесшовным. - person Krzysiek Mejka; 15.11.2011