注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

分享,态度 ·~~

—— 十年太长,五年;如果可以回到五年前,你最想对那时候的自己说什么?

 
 
 

日志

 
 

WPF中WebBrowser相应鼠标事件(续)  

2010-12-11 13:05:36|  分类: DotNet |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在前一篇Blog中(http://zwkufo.blog.163.com/blog/static/2588251201011106405356/)提到过,在WPF中可以以套一个WindowsFormHost的方式来实现更多功能的WebBrowser,如果User选择自己构建这样的浏览器结构,就可以自定义很多东西,比如就是鼠标事件。但是事实上,在之前实现鼠标事件的方式是注入javascript到网页,其实单纯这样的操作并不需要说要这么复杂的结构。我们直接在WPF版本的WebBrowser中获取网页并注入javascript是最简单的方法,具体代码如下:

        WebBrowser browser = null;
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            browser = new WebBrowser();
            browser.Margin = new Thickness(0);
            browser.Navigate(new Uri("http://zwkufo.blog.163.com"));
            gridMain.Children.Add(browser);
            browser.LoadCompleted+=new LoadCompletedEventHandler(browser_LoadCompleted);
            browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating);
        }

        void browser_LoadCompleted(object sender, NavigationEventArgs e)
        {

            mshtml.HTMLDocument htmlDoc = browser.Document as mshtml.HTMLDocument;  //mshtml需添加引用:.net->Microsoft.mshtml
            htmlDoc.parentWindow.execScript("document.onmousedown=function(e) { window.location.href='cmd://onmousedown'}", "javascript");  //这里document.onmousedown呢其实只是一个例子,你也可以实现其他的行为,比如document.onmouseover等等。这部分内容请参阅相关资料,javascript我不熟呵呵

            // =================================================
            // 在WinForm中需改用下面的类:
            // mshtml.IHTMLWindow2 win2 = (mshtml.IHTMLWindow2)webBrowser1.Document.Window.DomWindow;
            // win2.execScript("document.onmousedown=function(e) { window.location.href='cmd://onmousedown'}", "javascript");
            // =================================================
        }

        void browser_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            if (e.Uri.ToString().ToLower().Trim('/') == "cmd://onmousedown")
            {
                System.Windows.MessageBox.Show("哈哈哈哈哈");
                e.Cancel = true;
            }
        }

  评论这张
 
阅读(2324)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017