C#中t通过IHTMLElement,获得相应的HTML中的Javascript变量的值

C#中,已经获得了对应的IHTMLElement变量,想要获得此html中对应当前某个javascript类型的变量,即:

<SCRIPT type=text/javascript>
players();
$().ready(function(){
$("#ratesong").click(function(e){
var songid = cur_sid;
中的:songid或cur_sid。

【解决过程】

1.找了半天,找到一篇相对来说最接近我的问题的帖子:

如何用mshtml获得Javascript中function的返回值[mshtml]

但是还是不能得到我所想要的,如何获得对应的某个javascript类型的变量值。

2.又找到此贴:C# webbrowser控件技巧(取得javascript变量值, 禁止显示脚本错误),可是还是没有用,之前就找到过。

3.网上也找到一堆关于HTMLDocument的介绍:

HTMLDocument

HtmlDocument.GetElementsByTagName

和关于IHTMLElement的解释:

IHTMLElement和IHTMLElement2接口

IHTMLElement Object

但是都还是找不到我要的解决方案。

4.后来,无意间,找到这个帖子:

WebBrowser 获取页面标签class值

然后参考其代码,一点点折腾,写出了类似的代码,去实现了,找到对应的我所需要相关部分的html源码,然后用正则表达式处理,提取我所需要的当前songtaste的歌曲的id,即songId,也就间接实现了上述所需要的,当前javascript的变量的值songid了。

对应的代码如下:

HTMLDocument stPlayingPage = getMultiPlayingPage();

IHTMLElementCollection divTagName = stPlayingPage.getElementsByTagName("div");

foreach (IHTMLElement div in divTagName)

{

    if (div.id == "left_music_div")

    {

        //string html = div.outerHTML;

        string html = div.innerHTML;

        //<div class="songName">

        //    <p class="p_tit">歌曲试听:<b><span >准备用这歌做铃声^做铃声^哈哈哈^祭夜醉美推荐   祭夜醉美 </a></span></b></p>

        //</div>

        string songNameP = @"<div class=""songName"">\s+?<p class=""p_tit"">歌曲试听:<b><span ;

        Regex songNameRx = new Regex(songNameP);

        Match foundCurSong = songNameRx.Match(html);

        if (foundCurSong.Success)

        {

            string songId = foundCurSong.Groups["songid"].Value;

        }                       

    }

}