我正在尝试使用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()没有问题。
我见过其他人有类似的问题但不幸的是没有人适用于我的情况。如果需要,我很乐意提供任何其他信息!