HTML в iframe работает везде, кроме Opera - PullRequest
0 голосов
/ 11 января 2012

У меня есть iframe:

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

И после загрузки документа я хочу вставить html в этот iframe с таким кодом:

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.Опера бросает исключение:

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

В чем проблема с этим кодом?

1 Ответ

0 голосов
/ 11 января 2012

Вы пытались добавить атрибут src к <iframe/>?

Возможно, проблема в том, что Opera считает, что вставленный вами фрейм является междоменным документом. Установка локального 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...