如您所知,网页是 html 文件、一个或多个 css 文件和一个或多个 javascript 文件的联合:前两个元素由浏览器解析以生成 DOM 和其他对渲染有用的数据结构页 。
Javascript 文件是由引擎执行的,它们可以改变 DOM 的值或与 css 相关的数据结构的值,因此,在执行 javascript 之后,网页的“实际状态”可以不同于由原始 html 和 css 代码静态描述。
我需要开发一个 firefox 插件,它可以获取网页的“实际状态”并将其作为一对 html + css 文件存储到磁盘。
因为 html 文件很简单,我需要序列化 DOM。我担心的是 css:我可以遍历 DOM 并为每个元素获取其样式表,但它会非常慢并且会生成未优化的 css 代码。
让我们举个例子
我有这个 html 代码:
<html>
<head>
<title>Test</title>
<link type="text/css" rel="stylesheet" href="style.css" />
<script type='text/javascript' src="changebackground.js" > </script>
</head>
<body>
<div class="divclass" >
<form>
<h2>click to change the background</h2>
<input type="button" value="version" onclick="changebg()" />
</form>
</div>
</body>
Style.css 有这样的定义:
.divclass{
margin: .5in;
height: 400px;
}
body{
background-color: white;
color: blueviolet;
}
和 changebackground 有这个代码:
function changebg() {
document.body.style.backgroundColor = 'black';
}
显然,单击按钮后,背景颜色变为黑色。我的目标是编写一个附加组件,在此更改之后,将样式修改后的 css 还给我,即:
.divclass{
margin: .5in;
height: 400px;
}
body{
background-color: black;
color: blueviolet;
}
有任何想法吗?