繁体   English   中英

在Mocha测试文件中将html文件附加到JSDOM

[英]Appending a html file to JSDOM in mocha test file

是否可以将Jtdom附加一个HTML文件,而该Jsdom已经加载了单独的HTML文件?

是的,你可以这么做。 最简单的方法是:

  1. 使用jsdom创建您的初始DOM。
  2. 使用fs将第二个HTML文件读入字符串。
  3. 将第二个HTML文件的内容追加到jsdom返回的原始DOM中。

安装

npm install jsdom --save-dev
npm install fs --save-dev

示例代码:

var jsdom = require('jsdom').JSDOM;
var fs = require('fs');
var document = (new jsdom('<!DOCTYPE html><html><head></head><body></body></html>')).window.document;
var secondHtml = fs.readFileSync('HelloWorld.html').toString();
document.body.innerHTML = secondHtml;

请注意,您的第二个HTML应该排除<html><head><body>标记。 否则,您将在现有的<body>标记内插入<body>标记时遇到问题。

我认为这会有所帮助。

require('jsdom-global')();
var fs = require('fs');
document = window.document;
var dashboard = 
fs.readFileSync('yourHtmlFile').toString();
document.documentElement.innerHTML  = dashboard;

其他答案将替换正文的内部html。 OP希望追加

依赖关系:

npm install jsdom

解:

const {JSDOM} = require("jsdom");
const fs      = require("fs");

const appendJSDOM = (dom, htmlFile) => {
    const html = fs.readFileSync(htmlFile).toString();
    dom.window.document.body.insertAdjacentHTML('beforeend', html);
}

JSDOM.fromFile("file1.html")
.then(dom => {
    appendJSDOM(dom ,"file2.html");
    console.log(dom.serialize());
});

您可以继续调用appendJSDOM()来追加更多的html文件。 但是,就像其他答案所说的那样,您应该在其他html文件中省略<html><head><body>标记。

insertAdjacentHTML还可以将HTML插入不同的位置,具体取决于您放置的第一个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM