Как получить свойства документа в 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
. Я не знаю, какой вспомогательный метод использовать.
Извините, что я спал, когда вы спрашивали в чат-комнате 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 здесь в основном заключается в том, что она делает внутреннее преобразование.
Если кто-то хочет узнать ответ:
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>();
}