1

シンプルなコンテンツ iframe を作成するための JavaScript 関数を作成しました。すべてのブラウザ IE9、8、7 および chrome で正常に動作しますが、mozilla firefox では動作しません。コードの問題は何ですか? コンソールで例外も発生しません。

function (parent, child, cssfile, jsfilepath) {

        var iframe = document.createElement('iframe');
        iframe.id = ('MyID' + Math.floor((Math.random() * 1000000000000000000) + 1));
        iframe.frameBorder = '0';
        iframe.scrolling = 'no';
        iframe.marginWidth = '0';
        iframe.marginHeight = '0';
        iframe.hspace = '0';
        iframe.vspace = '0';
        iframe.allowTransparency = "true";

        parent.appendChild(iframe);

        var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

        var inter = window.setInterval(function() {
             if(iframeDoc.readyState == "complete") {
                 window.clearInterval(inter);

                 iframeDoc.body.innerHTML = child;

                 iframeDoc.body.style.background = "transparent";

                 addExternalCss(cssfile, iframeDoc);
                 addEmbedCss('body {margin:0px; padding:0px;}', iframeDoc);
                 addJs(jsfilepath, iframeDoc);
             }
         },100);
    }

編集

firebugで空白のiframeを表示するだけです

<iframe scrolling="no" frameborder="0" id="MyId350236077714409500" marginwidth="0" marginheight="0">

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

</iframe>
4

1 に答える 1

1

私は私の答えを見つけました

function (parent, child, cssfile, jsfilepath) {

        var iframe = document.createElement('iframe');
        iframe.id = ('MyID' + Math.floor((Math.random() * 1000000000000000000) + 1));
        iframe.frameBorder = '0';
        iframe.scrolling = 'no';
        iframe.marginWidth = '0';
        iframe.marginHeight = '0';
        iframe.hspace = '0';
        iframe.vspace = '0';
        iframe.allowTransparency = "true";

        parent.appendChild(iframe);



        var inter = window.setInterval(function() {
             // put inside function 
             var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

             if(iframeDoc.readyState == "complete") {
                 window.clearInterval(inter);

                 iframeDoc.body.innerHTML = child;

                 iframeDoc.body.style.background = "transparent";

                 addExternalCss(cssfile, iframeDoc);
                 addEmbedCss('body {margin:0px; padding:0px;}', iframeDoc);
                 addJs(jsfilepath, iframeDoc);
             }
         },100);
    }
于 2013-02-23T12:40:37.880 に答える