private void WebBrowserOnNewWindow(object sender, CancelEventArgs e)
        {
            dynamic browser = sender;
            dynamic activeElement = browser.Document.activeElement;
            var link = activeElement.ToString();            // 这儿是在新窗口中打开,如果要在内部打开,改变当前browser的Source就行了
            if (Regex.Match(link,@"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?").Success)//判断该网址是否为有效网址
            {
                CreateNewTab(new Uri(link));
                MessageBox.Show(link);
            }
            else
            {
                MessageBox.Show(link);
            }
            e.Cancel = true;
        }这段代码是在画板上打开一个浏览器后点击浏览器里面的内容执行的如我点击百度中的视频
主要是看link能不能取到正确的地址
在我点击一个具体的视频或者图片时,有时候会取到该视频或图片的url但有时则返回object
纠结。求解惑

解决方案 »

  1.   

      var link = activeElement.ToString();   
    不太明白,很想知道这个返回的是什么东东?
      

  2.   

    这个返回的应该是一个网址我也是纠结这里,因为这里有时候返回的是网址,有时候返回object....
      

  3.   

    其实这里返回就是一个object  返回一个网址是因为这里只有一个对象,
    你得把这个link 当做是一个links 来操作,  其实你可以做个例子 msg一下, 你打出来 link.ToString() 有二种情况一个显示出来一个URL地址, 另外一种会是显示 system.xxxxx 弹出来的是一个对象的引用
      

  4.   

    调试下吧,看看不是url的时候究竟是什么object
    再对症下药
      

  5.   

    现在我发现了0.0当视频是flash时,则返回object....
      

  6.   

      CreateNewTab(new Uri(link.ToString()));
      

  7.   


    新建一个选项卡 ? 新建的选项卡的链接地址是 link 这个变量!
      

  8.   

    先调试,多找出几个网址,分析研究......
    再筛选出object类型时的情况
      

  9.   

    这有啥纠结的,因为有的时候对象不是url呗
      

  10.   

    var link = activeElement.ToString();         //这是待匹配的Html元素
    //这里有一个潜在问题,如果是<a href="http://.../>就没问题,但如果是
    //<object data="http://www.123.com/1.flv?.... >
    //<param name="src" value="http://www.123.com/1.flv?...." />
    //</object>照样也能匹配成功,下面可以按照需要改一下,类似这样
    Match mc = Regex.Match(link,@"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
    if (mc.Success)//判断该网址是否为有效网址
    {
        CreateNewTab(new Uri(mc.Value));  //Match.Value就是匹配到的值了,也可以取某个分组
        MessageBox.Show(link);
    }
      

  11.   

    包含网址的Html元素 != 网址本身
      

  12.   

    我的意思是这段代码和我写的那个
    var link = activeElement.ToString();CreateNewTab(New Uri(Link));
    有区别么
      

  13.   

    返回object原因我知道了,是flash的问题,当我点击的视频为flash格式时,link取不到该视频的url,则会返回object
      

  14.   

    当视频格式为flash时,返回object,这段代码还是不能取得该地址
      

  15.   

    browser.Document.activeElement
    这个本来就是object类型吧。
    如果判断他不是 url类型 ,应该另找方法获取
      

  16.   

    现在的问题就是我不知道如果他是flash类型的时候我该怎么获取
      

  17.   

     CreateNewTab(new Uri(mc.Value));  
        MessageBox.Show(link);