ブラウザの履歴が読み込まれないようにするために、javascript を使用して iframe を動的に生成しようとしています。Firefox、Chrome、および IE9 で動作しますが、IE8 では replaceChild() 行で「型の不一致」エラーがスローされます。ここに私が書いた関数があります:
function frame(ref) {
var iframeHeaderCell = document.getElementById('frame');
var oldFrame = iframeHeaderCell.childNodes[1];
//Create new iframe element
var iframeHeader = document.createElement('IFRAME');
iframeHeader.src = ref ;
iframeHeader.frameBorder = 0;
//Replace iframe with a new one
iframeHeaderCell.replaceChild(iframeHeader, oldFrame);
return false;
}
および関連する HTML:
<a href="#" onclick="return frame('products/embo_balloon.html');" class="product">Embo Balloon</a>
<!-- Dynamically inserted iframe goes inside this div -->
<div id="frame">
<iframe></iframe>
</div>
replaceChild() メソッドを removeChild() と appendChild() に分割しようとしましたが、removeChild() で同じエラーが発生しました。これにより、「oldFrame」変数が関数の失敗の根本的な原因である可能性があると思いましたが、その方法はわかりません。また、appendChild() は問題なく動作することにも注意してください。
他の人が同様の問題を抱えているのを見てきましたが、残念ながら私の状況には当てはまりませんでした. 必要に応じて追加情報を提供させていただきます。