Firebreath 插件:如何在 c++ 部分中获取文档属性



如何在 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 .我不知道要使用什么帮助程序方法。

对不起,当你在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 中包装convert_cast.. catch,以防转换失败。这里的 DOM::D ocument 对象上的 getProperty 抽象基本上只是在内部执行convert_cast。

如果有人想知道答案:

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

相关内容

  • 没有找到相关文章

最新更新