无法在iframe中写内容

时间:2017-09-05 07:45:51

标签: javascript html iframe

我有以下html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>Scrape test</title>

    </head>
    <body>
        <div id="beatles">
            <div>
                <iframe id="gozujinsama"></iframe>
            </div>
        </div>
        <script type="text/javascript">
            var ifrm = document.getElementById('gozujinsama');
            var doc = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;
            doc.open();
            doc.write("<DOCTYPE html><html><body><a href=\"http://google.com\"><img src=\"\"/></a></body></html>");
            doc.close();
        </script>
    </body>
</html>

我尝试的是模拟各种广告脚本在iframe中编写html内容的方式。然后我尝试访问它然后我从我的JavaScript控制台得到以下错误:

  

TypeError:doc.write不是函数

你知道为什么吗?

3 个答案:

答案 0 :(得分:1)

你写错了代码。

var ifrm = document.getElementById('gozujinsama');
var doc = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;

doc.document.open();
doc.document.write("<DOCTYPE html><html><body><a href=\"http://google.com\"><img src=\"\"/></a></body></html>");
doc.document.close();

ifrm对象的属性为document,其函数为write。在您的代码中,您尝试在DOM引用上调用openwriteclose函数。

http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html

答案 1 :(得分:1)

以下是基于您的代码的工作代码。

Jsfiddle

完整的工作代码

    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Scrape test</title>

</head>
<body>
    <div id="beatles">
        <div>
            <iframe id="gozujinsama"></iframe>
        </div>
    </div>
    <script type="text/javascript">
        var ifrm = document.getElementById('gozujinsama');
        var doc = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;
        doc.document.open();
        doc.document.write('<DOCTYPE html><body><a href=\"http://google.com\"><img src=\"\"/></a></body></html>');
        doc.document.close();
    </script>
</body>
</html>

答案 2 :(得分:0)

另一种方法是:

var ifrm = document.getElementById('gozujinsama');
var doc = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;

doc.open();
if(doc.write){
    doc.write("<DOCTYPE html><html><body><a href=\"http://google.com\"><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/272px-Google_2015_logo.svg.png\"/></a></body></html>");
} else {
   doc.document.write("<DOCTYPE html><html><body><a href=\"http://google.com\"><img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/272px-Google_2015_logo.svg.png\"/></a></body></html>");
}

doc.close();