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获取null。我该怎么做才能在jsdom中获取iframe的html对象?
答案 0 :(得分: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。