0

c++部分でドキュメントのプロパティを取得するには? たとえば、document.title を取得して、firebreath プラグインの 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。どのヘルパー メソッドを使用すればよいかわかりません。

4

2 に答える 2

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
}

変換が失敗した場合に備えて、常に convert_cast を try .. catch でラップする必要があります。ここでの DOM::Document オブジェクトの getProperty 抽象化は、基本的に内部で convert_cast を実行しているだけです。

于 2013-10-10T19:43:44.340 に答える
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>();
}
于 2013-10-10T08:26:52.507 に答える