Я хочу загрузить файл HTML (используя fs.read), загрузить DOM с помощью jsdom, а затем изменить текст узлов тела (через jquery). Затем я хочу сохранить отредактированное окно DOM в виде файла HTML. Есть ли способ сделать это? Код, который я использую, является следующим:Node.js - Как редактировать элементы в окне jsdom и сохранять окно в виде нового файла 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?
});
});
});
Я думаю, что есть две неправильные вещи о '$ (document.body.getElementsByTagName (" * "))'. Во-первых, это комбинация jQuery и javascript-селекторов. Он должен быть '$ (" * ")' в jQuery, * или * 'document.body.getElementsByTagName (" * ")' в javascript. Во-вторых, это серверный код, поэтому jQuery недоступен здесь, если только я не знаю о реализации jQuery на стороне сервера. –
Я забыл включить var $ = require ('jquery') (окно) в этом сообщении, поэтому я отредактировал его, чтобы включить его. При использовании document.body.getElementsByTagName ("*") (без jquery) могу ли я просто отредактировать текст каждого узла? А затем сохранить отредактированный html? – Eva
Тем не менее, '$ (document.body.getElementsByTagName (" * "))' не имеет смысла и, вероятно, недействителен даже при загрузке jQuery. Итак, вы говорите мне, что используете jQuery * server * -side? Я искал вокруг, и я не вижу места, где это используется, или даже говорю, что это возможно вообще. jQuery выполняется для DOM-манипуляцийm, и на сервере нет DOM. Здесь я не понимаю. 'fs' является модулем SERVER, и' read' и 'write' могут быть получены только с сервера, а не с браузера. Пожалуйста, подтвердите, что это * сервер * -side скрипт (= НЕ запускается в браузере), и вы пытаетесь использовать jQuery в нем. –