javascript - 在 jsdom 窗口中编辑元素并将窗口另存为新的 HTML 文件?

标签 javascript jquery html node.js jsdom

我想加载一个 HTML 文件(使用 fs.read),使用 jsdom 加载 DOM,然后更改正文 Node 的文本(通过 jquery)。然后我想将编辑后的 ​​DOM 窗口保存为 HTML 文件。有没有办法做到这一点?我使用的代码如下:

fs.readFile(file, 'utf8', function(error, data) {
    jsdom.env(data, [], function (errors, window) {
        var $ = require('jquery')(window);
        $(document.body.getElementsByTagName("*")).each(function () {
            var content = $(this).text();
            var word = "\\b"+wordSuggestions.word+"\\b";
            var re = new RegExp(word, "g");
            content = content.replace(re, wordSuggestions.suggestion);
            $(this).text(content);
        });

        fs.writeFile(file, data, function (error){ // saving the new HTML file? What should I put instead of data? Window?
        });
    });
});

最佳答案

这是一个如何做的例子。我以您的代码为基础,但对其进行了一些简化,以便我可以执行代码并说明如何执行此操作。以下代码读取 foo.html 并将文本 modified! 添加到所有 p 元素,然后将其写入 out.html 。您缺少的主要内容是 window.document.documentElement.outerHTML

var jsdom = require("jsdom");
var fs = require("fs");

fs.readFile('foo.html', 'utf8', function(error, data) {
    jsdom.env(data, [], function (errors, window) {
        var $ = require('jquery')(window);
        $("p").each(function () {
            var content = $(this).text();
            $(this).text(content + " modified!");
        });

        fs.writeFile('out.html', window.document.documentElement.outerHTML,
                     function (error){
            if (error) throw error;
        });
    });
});

关于javascript - 在 jsdom 窗口中编辑元素并将窗口另存为新的 HTML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30120351/

相关文章:

jquery - 由于较低的表格拉伸(stretch)而固定标题宽度

html - 保持所有 LI 的边框高度相同

html - Position Absolute 内部位置 绝对定位

javascript - 用另一个 promise 履行(不解决) promise

javascript - 在没有 cv.imshow() 的情况下显示 Opencv.js 矩阵

javascript - 使用 Uint32Array : Wrong colors are being rendered 的 Canvas

javascript - URL 在 IE9 地址栏中粘贴/输入时有效,但在 href 或 window.open 中无效

javascript - 如何将此函数添加到数组而不立即调用它?

javascript - 选择任何选项后如何更改选择菜单背景颜色|不是选项颜色

html - 在输入字段中设置内容后添加背景颜色