获取浏览器窗口中可见区域的大小

时间:2012-09-29 20:26:56

标签: firebreath

这是问题的延续(http://goo.gl/a61CG)。

我正在尝试检索包含插件的DOM窗口或文档的可见大小(不确定哪个术语是正确的)。我一直在研究Firebreath的参考资料,但我还没有得到答案。

例如在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.");

谷歌浏览器(第23集)现在给我这个:

Attaching window.
width: 300; height: 300

Finished attaching window.

300x300像素是指hmtl对象的大小,它命令浏览器加载插件。

那么,检索包含插件的浏览器窗口的可见区域的方法是什么?

我在Windows 7和Visual Studio 2010上使用最近的firebreath trunk版本。

谢谢, 基督教

1 个答案:

答案 0 :(得分:1)

基本上你应该寻找的并不是具体如何用 firebreath 来实现这一点,而是如何用javascript来做到这一点。然后你就可以使用DOM元素/窗口/文档抽象来做同样的事情了。

很多人都没有意识到最好的浏览器插件开发人员也非常了解javascript。

请参阅screen width vs visible portion

现在,您需要确保在所有浏览器上进行测试;一些属性IE不通过IDispatch公开(这是FireBreath默认使用的),在这种情况下,可能需要将自定义处理程序添加到DOM抽象中;如果是这种情况(http://npapi.com/chat)我会在IRC上与我交谈,我会帮助你。