これが取り引きです(少し単純化しすぎています)「タブ」を持つアプリケーションを作成しています。各タブには、iFrameとして表示される同様のコンテンツを含めることができます。そのため、iFrame ロードからの最初のリクエストはやや高価な操作であるため、タブ スイッチ間でそれらを共有したいと考えていました。
ただし、これには iframe を「保存」してから、DOM に再挿入する必要があります。これには 2 つの問題があります。1) iframe の contentWindow にアクセスして、メモリ内にある間は javascript 関数を呼び出すことができないようです。2) iframe は、DOM に挿入されるたびにリロードされます。
document.adoptNode が問題#2を修正する可能性があることを読んだので、次のことを試しました
<html>
<head>
</head>
<body>
<script>
window.onload = function() {
setTimeout(adoptIFrame, 500);
};
var next = ['red', 'blue']
var index = 0;
function adoptIFrame() {
var iFrame = document.adoptNode(document.getElementById("frame"));
document.getElementById(next[index++ % 2]).appendChild(iFrame)
setTimeout(adoptIFrame, 500);
}
</script>
<div id="red" style="width:500;height:500;background-color:red;">
</div>
<div id="blue" style="width:500;height:500;background-color:blue;">
<iframe src="your_url" id="frame"/>
</div>
</body>
ただし、毎回、再挿入時に更新が行われます。
何か案は?