2011-04-25 67 views
1

大家好,希望这是一个快速的。
我正在研究一个c#web浏览器,其中包括更改css样式的网页,例如google和facebook。例如它会使Facebook上的背景和谷歌红而不是白色。我已经取得了成功,但它并不一致,我不知道为什么。
在C#中动态更改Css风格(夏普)不使用Asp

HtmlDocument doc = Browser1.Document; 
HtmlElement textElem = doc.CreateElement("DIV"); 
textElem.InnerHtml = "<STYLE>body{background-color:red!important}</STYLE>"; 
doc.Body.AppendChild(textElem); 

代码工作在www.google.com但却没有www.rationality.tk ..

HtmlElement head = Browser1.Document.GetElementsByTagName("body")[0]; 
head.SetAttribute("bgcolor", "red"); 

该代码工作的www.rationality.tk但不能www.google.com和两位码不上WWW工作.facebook.com,我无法得到任何工作。

我可能做错了事情,我放弃了C++后转移到C#,我发现它更容易,但仍然得到它的挂钩。先谢谢你。

编辑:问题解决了

HtmlElement head = Browser1.Document.GetElementsByTagName("body")[0]; 
head.Style = "background-color:red";

这个工作在Facebook,谷歌和rationality.tk

+0

即使Chrome的动态样式编辑也不一致。 – 2011-04-25 15:57:12

+0

我只是不明白谷歌有一个机构,所以为什么没有设置属性工作理性.tk它没有预设的CSS样式可以这是为什么设置CSS编辑代码不起作用。我完全失去了Facebook,我甚至不能编辑特定的div。 – 2011-04-26 04:45:40

回答

0

我不是很肯定,但问题可能是由于嵌入式iframes和iGoogle小工具一样。在COM/ATL中为我的浏览器助手对象实现类似的功能时,我遇到了同样的问题。帮助我(在某种程度上)的方法是等待DOCUMENT_COMPLETE每个iframe事件,然后尝试获取它们的body。我再次不确定如何在C#中实现同样的功能。这只是你想法中的一些食物。

+0

我非常高兴地宣布,我已经解决了纯粹的漏洞问题,这里是我的代码,并在我的文章中发布了解决方案 – 2011-04-26 13:16:26