克隆节点时如何保留样式
我想获取一个 html 文档(一本书的章节)并将其分成多个页面(一个 DIV 数组,每个页面包含一个适合 DIV 规定尺寸的 html 内容页面)。我使用以下代码遍历 DOM(可以在本网站找到!)。
function walk(node, func)
{
func(node);
node = node.firstChild;
while (node)
{
walk(node, func);
node = node.nextSibling;
}
};
func 函数称为 test,如下所示。
function test(node)
{
var copy=node.cloneNode(false);
currentPageInArray.appendChild(copy);
//Test if we still fit
if( $(currentPageInArray).height() <= maxPageHeight )
{
//All good
}
else
{
//We dont fit anymore
//Remove node that made us exceed the height
currentPageInArray.removeChild(copy);
createNewPage();
currentPageInArray.appendChild(copy); //into new page
}
}
我的页面生成正确,但是,我丢失了所有样式,例如斜体、粗体、标题等。如果我尝试克隆(true),许多元素会重复多次。我该如何解决这个问题?提前致谢。
I want to take an html document (a book chapter) and separate it into pages (an array of DIV, each containing a page of html content that will fit within the prescribed dimensions of the DIV). I walk the DOM with the following code (found on this site!).
function walk(node, func)
{
func(node);
node = node.firstChild;
while (node)
{
walk(node, func);
node = node.nextSibling;
}
};
The func function is called test and is below.
function test(node)
{
var copy=node.cloneNode(false);
currentPageInArray.appendChild(copy);
//Test if we still fit
if( $(currentPageInArray).height() <= maxPageHeight )
{
//All good
}
else
{
//We dont fit anymore
//Remove node that made us exceed the height
currentPageInArray.removeChild(copy);
createNewPage();
currentPageInArray.appendChild(copy); //into new page
}
}
My pages get generated correctly, however, I lose all styles such as italic, bold, headers, etc. If I try clone(true), many elements get duplicated multiple times. How can I fix this? Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 currentStyle 检索每个元素的当前布局(IE<9) 或 getCompulatedStyle(其他)并将其应用于克隆的元素。
You may retrieve the current layout of every element using currentStyle(IE<9) or getComputedStyle(Others) and apply it to the cloned elements.