如何使用MSHTML解析onclick javascript事件参数?

时间:2009-11-07 08:57:11

标签: html5 mshtml

我需要在以下标记中定义的onlick事件中提取javascript调用:

<div style="cursor: pointer;" onclick='javascript:start("a", "b", "code");'>Click Here</div></div>

这是我想从onclick中提取的文本字符串: 'javascript:start(“a”,“b”,“code”);'

我是使用MSHTML的新手,这是我到目前为止所尝试的,而我无处可去。也许有更好的方法来做到这一点?

foreach (mshtml.IHTMLElement elm in (IHTMLElementCollection)doc.body.all)
{
    if (elm.getAttribute("onclick", 0) != null)
    {
        if (elm.getAttribute("onclick", 0).ToString().Contains("javascript:start"))
        {
            Debug.WriteLine("Found!");
        }
    }    
}

3 个答案:

答案 0 :(得分:1)

我明白了。只需检查元素的outerHTML即可。 。elm.outerHTML.ToLower()包含( “JavaScript的:启动”)

答案 1 :(得分:1)

onclick属性根本不应包含“javascript:”。它不接受javascript:URL作为其值。它应该只包含javascript表达式。 (虽然,如果你确实包含“javascript:”,那么它只是被脚本引擎视为没有副作用的标签)。

即。 <p onclick="alert('hello');">This is correct</p>

<p onclick="javascript:alert('hello');">This is not ideal.</p>

因此,假设正在解析的标记正确执行此操作,那么上面的代码不应检查是否包含字符串“javascript:”。它应该只是:

if (elm.getAttribute("onclick", 0).ToString().Contains("start"))

答案 2 :(得分:0)

获取此数据的另一种方法是通过.getAttribute()函数:

If oHTMLDivElement.hasAttribute("onclick") then
    Debug.Print oHTMLDivElement.getAttribute("onclick")
End If

这假定'oHTMLDivElement'是MSHTML.HTMLDivElement对象。