1

我需要在以下标记中定义的 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!");
        }
    }    
}
4

3 回答 3

1

我想到了。只需检查元素的 outerHTML。elm.outerHTML.ToLower().Contains("javascript:start")

于 2009-11-07T18:19:06.710 回答
1

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

IE <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"))

于 2010-03-04T17:06:41.393 回答
0

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

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

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

于 2012-07-26T18:01:15.553 回答