0

ここに私のコードがあります:

var allEles = webBrowser1.Document.All;
        foreach (HtmlElement item in allEles)
        {
            if (item.TagName.ToLower() == "div")
            {
                if(//Here i want to check if div has a background-image css property)
                {
                    //do anything
                }
            }
        }

私は無駄にたくさん検索しました:(

4

1 に答える 1

0

私は自分の拡張メソッドを書きました:

public static class Extensions
{
    public static bool hasBackgroundImage(this HtmlElement ele, string cssFolderPath)
    {
        string styleAttr = ele.Style.ToLower();
        if (styleAttr.IndexOf("background-image") != -1 || styleAttr.IndexOf("background") != -1)
        {
            if (styleAttr.IndexOf("url") != -1)
            {
                return true;
            }
        }
        string[] classes = ele.GetAttribute("className").Split(' ');
        foreach (string className in classes)
        {
            if (className.Trim() == "")
            {
                continue;
            }
            System.IO.DirectoryInfo d = new System.IO.DirectoryInfo(cssFolderPath);
            foreach (System.IO.FileInfo item in d.GetFiles().Where(p => p.Extension == ".css"))
            {
                string cssFile = System.IO.File.ReadAllText(item.FullName);
                int start = cssFile.IndexOf(className);
                if (start != -1)
                {
                    string sub = cssFile.Substring(start + className.Length);
                    int end = sub.IndexOf('}');
                    string cssProps = sub.Substring(1, end).Replace("{", "").Replace("}", "").ToLower();
                    if (cssProps.IndexOf("background-image") != -1 || cssProps.IndexOf("background") != -1)
                    {
                        if (cssProps.IndexOf("url") != -1)
                        {
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
}

そして今、私は自分のメソッドを呼び出すことができます:

var allEles = webBrowser1.Document.All;
    foreach (HtmlElement item in allEles)
    {
        if (item.TagName.ToLower() == "div")
        {
            if(item.hasBackgroundImage("myCssFolderPathHere"))
            {
                //do anything
            }
        }
    }

しかし、これはローカルのhtmlファイルを実行している場合にのみ機能します....私の拡張メソッドのパラメーターとしてcssフォルダーパスをスローする必要があるため、それが私が探していたものです:)

于 2014-10-22T18:18:30.547 に答える