构建HtmlElement对象树

构建HtmlElement对象树,第1张

概述我在C#桌面应用程序中使用MSIE WebBrowser控件,并且正在寻找一种在此控件之外构建和维护 HtmlElement对象树的方法.我试图在多个复杂页面之间快速切换,而不会产生每次重新解析HTML的开销(并且我不想维护根据需要显示/隐藏的多个控件). 我发现a)我只能通过控件的HtmlDocument创建HtmlElement对象,并且b)一旦我从控件的HtmlDocument中删除了Htm 我在C#桌面应用程序中使用MSIE Webbrowser控件,并且正在寻找一种在此控件之外构建和维护 HtmlElement对象树的方法.我试图在多个复杂页面之间快速切换,而不会产生每次重新解析HTML的开销(并且我不想维护根据需要显示/隐藏的多个控件).
我发现a)我只能通过控件的HTMLdocument创建HTMLElement对象,并且b)一旦我从控件的HTMLdocument中删除了HTMLElement对象的“trunk”,它就“消失了”,即使我一直保持对root的强引用元件.
我怎样才能做到这一点?

附:如果他们允许我完成上述 *** 作,我愿意考虑其他浏览器控件(例如Gecko).

解决方法 这样做

// On screen webbrowser controlwebbrowserControl.Navigate("about:blank");webbrowserControl.document.Write("<div ID=\"div1\">This will change</div>");var elementToReplace = webbrowserControl.document.GetElementByID("div1");var nodetoReplace = elementToReplace.DomElement as msHTML.IHTMLDOMNode;// In memory webbrowser control to load fragement into// It needs this base object as it is a COM controlvar webbrowserFragement = new Webbrowser();webbrowserFragement.Navigate("about:blank");webbrowserFragement.document.Write("<div ID=\"div1\">Hello World!</div>");var elementReplacement = webbrowserFragement.document.GetElementByID("div1");var nodeReplacement = elementReplacement.DomElement as msHTML.IHTMLDOMNode;// The magic happens here!nodetoReplace.replaceNode(nodeReplacement);

我怀疑这会改善性能,因为文本渲染器很快,如果你有一个隐藏div的大页面或其他对象的内存中有多个div,所消耗的内存仍然是相同的?

总结

以上是内存溢出为你收集整理的构建HtmlElement对象树全部内容,希望文章能够帮你解决构建HtmlElement对象树所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1075107.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存