Получить размер видимой области внутри окна браузера

это продолжение вопроса (http://goo.gl/a61CG).

Я пытаюсь получить видимый размер окна или документа DOM (не уверен, какой термин правильный), который содержит плагин. Я изучал отсылку к Огнедышащим, но не нашел ответа.

Например, внутри onWindowAttached я делаю это:

m_host->htmlLog("Attaching window.");

FB::DOM::ElementPtr element_ptr(m_host->getDOMElement());
if( element_ptr )
{
    int Width  = element_ptr->getWidth();
    int Height = element_ptr->getHeight();

    std::stringstream ss;
    ss << "width: " << Width << "; height: " << Height << std::endl;
    m_host->htmlLog(ss.str());
}

FB::DOM::ElementPtr parent_element_ptr = element_ptr->getParentNode();
if( parent_element_ptr )
{
    int Width  = parent_element_ptr->getWidth();
    int Height = parent_element_ptr->getHeight();

    std::stringstream ss;
    ss << "parent props: width: " << Width << "; height: " << Height << std::endl;
    m_host->htmlLog(ss.str());
}

m_host->htmlLog("Finished attaching window.");

Google Chrome (v.23) дает мне это сейчас:

Attaching window.
width: 300; height: 300

Finished attaching window.

300x300 пикселей относятся к размеру объекта hmtl, который приказывает браузеру загрузить плагин.

Итак, как же получить видимую область окна браузера, содержащую плагин?

Я использую последнюю версию магистрали Firebreath в Windows 7 и Visual Studio 2010.

Спасибо, Кристиан


person chhenning    schedule 29.09.2012    source источник


Ответы (1)


По сути, вам следует искать не то, как это сделать конкретно с firebreath, а то, как это сделать с помощью javascript. Затем вы просто делаете то же самое, используя абстракции элемента DOM/окна/документа.

Многие люди не понимают, что лучшими разработчиками плагинов для браузера являются те, кто действительно хорошо понимает javascript.

См. раздел ширины экрана и видимой части.

Теперь вам нужно убедиться, что вы протестировали это во всех браузерах; некоторые свойства IE не раскрывает через IDispatch (это то, что FireBreath использует по умолчанию), и в этом случае может потребоваться добавить пользовательский обработчик в абстракцию DOM; поговорите со мной в IRC, если это так (http://npapi.com/chat), и я помочь тебе.

person taxilian    schedule 30.09.2012
comment
Это очень полезно! Я посмотрю вызов Javascript из плагина. Прохладный! - person chhenning; 01.10.2012