除了Opera之外,iframe中的Html无处不在

时间:2012-01-11 08:38:23

标签: javascript iframe

我有一个iframe:

<iframe id='adsFrame_11'marginwidth='0' marginheight='0' scrolling='no' frameborder='0'></iframe>

在我加载文档后,我想在此iframe中使用以下代码插入html:

function proxyAds(n,id,src){
    var doc;
    try{
        if(document.all && !window.opera){
            doc = window.frames['adsFrame_'+id].document;
        }else if(document.getElementById){
            doc = document.getElementById('adsFrame_'+id).contentDocument;
        }
    }catch(e){
        if(console) console.warn(e);
    }

    if(doc){

        s = '<scr'+'ipt type="text/javascript" src="'+src+'"></scr'+'ipt>';
        doc.open()
        doc.write(s);
        doc.close()

        $('#adsFrame_'+id).show();

    }else{
        setTimeout('proxyAds('+(++n)+','+id+',"'+src+'");', 100);
    }


}

这个功能很好用于Opera。 Opera抛出异常:

Uncaught exception: ReferenceError: Security error: attempted to read protected variable: open

此代码有什么问题?

1 个答案:

答案 0 :(得分:0)

您是否尝试将src属性添加到<iframe/>

问题可能是Opera认为您插入的iframe是跨域文档。设置本地src(例如一个空的HTML文档)可以解决问题。

例如,您需要一个blank.html文件,其中包含以下内容:

<html><body></body></html>

然后您可以像这样插入iframe:

<iframe src="blank.html" id='adsFrame_11' marginwidth='0' marginheight='0' scrolling='no' frameborder='0'></iframe>