javascript – 将DOM操作应用于HTML并保存结果?

前端之家收集整理的这篇文章主要介绍了javascript – 将DOM操作应用于HTML并保存结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有大约100个静态 HTML页面,我想应用一些DOM操作.它们都遵循相同的HTML结构.我想对每个文件应用一些DOM操作,然后保存生成的HTML.

这些是我想要应用的操作:

# [start]
$("h1.title,h2.description",this).wrap("<hgroup>");
if ( $("h1.title").height() < 200 ) {
  $("div.content").addClass('tall');
}
# [end]
# SAVE NEW HTML

第一行(.wrap())我可以很容易地使用查找和替换,但是当我必须确定元素的计算高度时,它变得棘手,这不能轻易地确定sans-JavaScript.

有谁知道我怎么能做到这一点?谢谢!

解决方法

虽然第一部分确实可以在“文本模式”中使用正则表达式或JavaScript中更完整的DOM实现来解决,但对于第二部分(高度计算),您需要一个真实的完整浏览器或像PhantomJS这样的无头引擎.

PhantomJS homepage

PhantomJS is a command-line tool that packs and embeds WebKit.
Literally it acts like any other WebKit-based web browser,except that
nothing gets displayed to the screen (thus,the term headless). In
addition to that,PhantomJS can be controlled or scripted using its
JavaScript API.

下面是一个示意性指令(我承认未经测试).

在您的修改脚本(例如,modify-html-file.js)中打开一个HTML页面,修改它的DOM树和console.log根元素的HTML:

var page = new WebPage();

page.open(encodeURI('file://' + phantom.args[0]),function (status) {
    if (status === 'success') {
        var html = page.evaluate(function () {
            // your DOM manipulation here
            return document.documentElement.outerHTML;
        });
        console.log(html);
    }
    phantom.exit();
});

接下来,通过将脚本的输出重定向文件来保存新的HTML:

#!/bin/bash

mkdir modified
for i in *.html; do
    phantomjs modify-html-file.js "$1" > modified/"$1"
done

猜你在找的JavaScript相关文章