相关疑难解决方法(0)

C#:将CSS注入MSHTML实例的最佳方法是什么?

我正在尝试将一些其他HTML附带的CSS注入到C#托管的WebBrowser控件中.我试图通过底层的MSHTML(DomDocument属性)控件来执行此操作,因为此代码用作完整IE8 BHO的各​​种类型的原型.

问题是,虽然我可以注入HTML(通过mydomdocument.body.insertAdjacentHTML)和Javascript(通过mydomdocument.parentWindow.execScript),但它完全拒绝我的CSS代码.

如果我在注入后将包含我要插入的HTML的字符串与目标页面源进行比较,那么MSHTML的源将包含<style>元素及其基础源之外的所有内容.

CSS通过了CSS 2.1的W3C验证.它没有做任何太棘手的事情,除了一些背景图像属性将图像直接嵌入到CSS中(例如background-image: url("data:image/png;base64......),并且注释掉这些行并不会改变结果.

更奇怪的是(而且我不确定这是否相关),是我上周没有遇到任何问题.本周我又回到了它,在切换了一些在实际注入之前处理要注入的HTML的代码之后,它不再起作用了.当然,我认为我的某个更改可能会出现问题,但在对所有逻辑进行评论并将其直接输入后,HTML仍然显示为未格式化.

目前我正在注入<body>标签,虽然我已经尝试注入<head>并且遇到了类似的结果.

在此先感谢您的帮助!

汤姆

c# browser mshtml code-injection internet-explorer-8

3
推荐指数
1
解决办法
7097
查看次数