2009-11-07 86 views
1

我需要提取的JavaScript調用在下面的標記定義的點擊數事件:如何使用MSHTML解析onclick javascript事件參數?

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

這是我想從的onclick爲文本字符串中提取什麼: 「的javascript:啓動(‘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!"); 
     } 
    }  
} 

回答

1

我想通了。只需檢查元素的outerHTML。 。elm.outerHTML.ToLower()包含( 「JavaScript的:啓動」)

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

0

另一種方式來獲得這個數據是通過.getAttribute()函數:

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

這假定 'oHTMLDivElement' 是一個MSHTML.HTMLDivElement對象。