iframe を含むアプリケーションがあります。iframe のコンテンツは変更できますが、ページ全体は変更できません。たとえば、次のようになります。
<html><head></head>
<body>
<iframe>
<!-- my code -->
</iframe>
</body></html>
iframe のコンテンツを別のページ (おそらく別のドメイン) に変更して戻る必要があるという要件があります。現在、私は次のようにしています: 最初のページ (iframe executionPanelApplications 内にあります):
<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>
2 番目のページ (iframe の executionPanelApplications 内にもある必要があります):
<script>
function leave(e) {
var iframe = parent.parent.document.getElementById("executionPanelApplications");
iframe.src = url;
};
</script>
両方のサイトが localhost にある場合、それは魅力のように機能します。残念ながら、それらが異なるドメインにある場合は、2 番目のページが新しいウィンドウで開かれます。すなわち8でテストされました。私が言ったように、iframeを含むページの内容を変更することはできません。iframe 内からしか作業できません。これは、つまりでのみ機能する必要があります。
何か案は?