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