2009-11-07 3 views
1

나는 다음과 같은 마크 업에 정의 된 onlick 이벤트에서 자바 스크립트 호출을 추출해야합니다MSHTML을 사용하여 onclick javascript 이벤트 매개 변수를 구문 분석하는 방법은 무엇입니까?

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

이 내가 온 클릭 텍스트 문자열에서 추출 할 것입니다 : '자바 스크립트 : ("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 : start")

1

onclick 속성에는 "javascript :"가 포함되어서는 안됩니다. 자바 스크립트 : URL을 값으로 사용하지 않습니다. 그냥 자바 스크립트 표현식을 포함해야합니다. ("javascript :"를 포함 시키면 스크립트 엔진에 의해 악영향이없는 레이블로 처리됩니다.).

즉, 그럼이 제대로 다음, 위의 코드는 문자열의 포함을 확인하지합니다 않습니다 해석되는 마크 업 가정

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

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

"자바 스크립트 :". 그냥해야한다 :

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 객체 있다고 가정합니다.