Плагин Firebreath: Как получить свойства документа в части c ++?

0

Как получить свойства документа в c++? Например, я хочу получить файл document.title и сохранить его в c++ части плагина firebreath?

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. Я не знаю, какой вспомогательный метод использовать.

Теги:
dom
firebreath

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, если конвертер завершается с ошибкой. Абстракция getProperty на объекте DOM :: Document здесь в основном заключается в том, что она делает внутреннее преобразование.

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>();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню