1

这是问题的延续(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.");

Google Chrome ( v.23 ) 现在给我这个:

Attaching window.
width: 300; height: 300

Finished attaching window.

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

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

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

谢谢,克里斯蒂安

4

1 回答 1

1

基本上,您应该寻找的实际上并不是如何专门使用firebreath执行此操作,而是如何使用 javascript 执行此操作。然后,您只需使用 DOM 元素/窗口/文档抽象来做同样的事情。

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

查看屏幕宽度与可见部分

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

于 2012-09-30T06:04:42.870 回答