2013-10-10 1 views
0

C++ 부분에서 문서 속성을 얻는 방법은 무엇입니까? 예를 들어 document.title을 가져와 firebreath 플러그인의 C++ 부분에 저장하고 싶습니다.Firebreath Plugin : C++ 부분에서 문서 속성을 얻는 방법은 무엇입니까?

if (window && window->getJSObject()->HasProperty("domain")) { 
    FB::JSObjectPtr docObj = window->getProperty<FB::JSObjectPtr>("document"); 

    consoleObj->Invoke("log", FB::variant_list_of("Has obtained document")); 

    if(docObj && docObj->HasProperty("domain")){ 
     m_domain = docObj->getJSObject()->getProperty<std::string>("domain"); 
     consoleObj->Invoke("log", FB::variant_list_of("Has obtained domain: " + m_domain)); 
    } 

} 

는하지만이 사람은 docObj가있는 방법 HasProperty이 없기 때문에 컴파일에 실패. 나는 도우미 방법을 사용할지 모르겠다.

답변

2

당신이 FireBreath 채팅 방에 물어 보면 내가 자고 있었다 죄송합니다. 약간 더 축약 된 방법은 다음과 같습니다 :

FB::DOM::DocumentPtr dom = m_host->getDOMDocument(); 
try { 
    if (dom && dom->getJSObject()->HasProperty("title")) { 
     std::string title = m_host->getDOMDocument()->getProperty<std::string>("title"); 
    } 
} catch (...) { 
    // Could not get the title 
} 

변환이 실패 할 경우를 대비하여 try_catch에서 항상 convert_cast를 래핑해야합니다. DOM :: Document 객체의 getProperty 추상화는 기본적으로 내부적으로 convert_cast를 수행하는 것입니다.

0

경우 누군가가 답을 알고 싶어

FB::DOM::DocumentPtr dom = m_host->getDOMDocument(); 
if (dom && dom->getJSObject()->HasProperty("title")) { 
    std::string title = m_host->getDOMDocument()->getJSObject()->GetProperty("title").convert_cast<std::string>(); 
}