如何将<div>注入WPF WebBrowser控件以重叠?</div>中的所有网页内容

时间:2012-02-09 15:41:10

标签: c# wpf webbrowser-control

我想要做的是当WPF WebBrowser加载页面时我只想在页面内容上放置一些以防止用户在下载页面中发现任何点击事件

所以这个想法以某种方式插入包含它的风格到下载页面......

有可能吗?

如果是,那么如何在C#中实现呢?

1 个答案:

答案 0 :(得分:3)

您可以导航到javascript:网址吗?这可能是做到这一点的廉价方式,我相信这就是我过去做的事情。

还有另一种涉及直接访问DOM的方法。它涉及访问WebBrowser.Document,您可以将其转换为COM类型。我需要回答你的具体技巧 - 我把它保存在某个地方 - 但MSDN上有一点点暗示。

编辑:

测试JavaScript的最简单方法是执行以下操作:

webBrowser.Navigate("javascript:alert('Test');")

如果您在没有网页消失的情况下收到Test的对话框,那就可以了。如果测试有效,您可以插入任何想要的JavaScript。例如:

webBrowser.Navigate("javascript:void(document.body.innerHTML = '<div>Test</div>' + document.body.innerHTML);");

正确方法

我要试一试,但这是未经测试的,所以请记住,您可能需要稍微调整一下这个过程。

  1. 参考ShDocVw.dll
  2. using命名空间添加mshtml语句。
  3. WebBrowser.Document对象转换为mshtml.IHTMLDocument2界面。
  4. 这可以让您访问文档的DOM,因此您应该能够使用IntelliSense从这里找出要做的事情。但是你会使用COM,所以它会有点麻烦,需要大量的接口工作。
  5. 编辑:This question有一些很好的例子。不过,我会使用普通转换代替as关键字。 obj as Somethingobj is Something ? (Something)obj : null的语法糖。这里额外的测试真的没必要。