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:」を含めても、スクリプト エンジンによってラベルとして扱われ、悪影響はありません)。

すなわち <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 に答える