Oracle Apex (Oracle データベースに対して動作する UI ツール) によって生成されたレポートがあります。各レコードにハイパーリンクが表示されるようにカスタマイズしました。クリックすると、現在のレコードのすぐ下にある iframe で詳細レポートが開きます。これは、html テーブル要素で Javascript の insertRow メソッドを使用して実行しています (以下の圧縮された Javascript コード。Oracle APEX では JS/Jquery を使用できます)。
var pTable= html_CascadeUpTill(t,'TABLE');
var myNewRow = pTable.insertRow(pTR.rowIndex+1);
var myNewCell = myNewRow.insertCell(0);
myNewCell.innerHTML = '<iframe src="detail report url" height="0"></iframe>';
詳細レコードごとに異なる iFrame の高さをサイズ変更するために、ページの document).ready(function() に次のコードがあります。
$('iframe').load(function()
{
setTimeout(iResize, 1000);
}
function iResize()
{
// Iterate through all iframes in the page.
for (var i = 0, j = iFrames.length; i < j; i++)
{
var y=(iFrames[i].contentWindow || iFrames[i].contentDocument);
if (y.document)y=y.document;
var docHt = getDocHeight(y);
if (docHt) iFrames[i].height = docHt + "px";
}
}
);
iResize 関数への setTimeout 呼び出しがないと、iframe のサイズ変更は行われません。しかし、この setTimeout は、サイズ変更された iframe に表示される遅延を追加しているため、回避したいと考えています。これを行う方法はありますか?私がオンラインで見たすべての関連する投稿/記事は、ページに組み込まれているが、私の場合のようにオンザフライで生成されていない iframe を扱っています。
さらに情報が必要な場合はお知らせください。助けてください。ありがとうございました。