3
var elementFrame = window.document.createElement('iframe');
    elementFrame.style.display = 'none';
    elementFrame = window.document.body.insertBefore(elementFrame, null);

if (elementFrame.contentDocument) {
    element = elementFrame.contentDocument;
} else if (element.contentWindow) {
    element = elementFrame.contentWindow.document;
}

console.log("Element **********" + element);

我正在使用带有必需参数的 jsdom

var path = require("path");
    global.jsdom = require("jsdom");
    global.jsdom.defaultDocumentFeatures = {
        ProcessExternalResources: true,
        ProcessExternalResources : ['script', 'frame', 'iframe'],
        FetchExternalResources : ['script','img','css','frame','iframe','link'],
        MutationEvents: true,
        QuerySelector : true
    };

我的 contentDocument 为空。我应该怎么做才能在 jsdom 中获取 iframe 的 html 对象?

4

1 回答 1

0

您的代码执行您希望它执行的操作,但您可能会尝试在文档完成加载之前添加 iframe。<body>在标签末尾添加 javascript 即可:

<!DOCTYPE html>
<html>
    <head>
        <title></title>

    </head>
    <body>
        <script>
            var elementFrame = window.document.createElement('iframe'); 
            elementFrame.style.display = 'none'; 
            elementFrame = window.document.body.insertBefore(elementFrame, null);

        if (elementFrame.contentDocument) {
            element = elementFrame.contentDocument;
        } else if (element.contentWindow) {
            element = elementFrame.contentWindow.document;
        }

        console.log("Element **********" + element);
        </script>
    </body>
</html>

这是带有此代码的jsFiddle 。

于 2013-07-22T00:15:44.907 回答