【问题标题】:Accessing Firefox tab element in nsIWebProgressListener::OnStateChange using C++使用 C++ 访问 nsIWebProgressListener::OnStateChange 中的 Firefox 选项卡元素
【发布时间】:2010-03-19 08:41:10
【问题描述】:

我正在使用 VS2008 为 Firefox 3.0-3.5 版本开发扩展。

一旦文档加载请求在该选项卡窗口中完成,我想为该选项卡设置属性。

所以在 OnStateChange 方法中,我正在检查文档加载。 我已经使用了 STATE_STOP 和 STATE_IS_DOCUMENT。

我想确定哪个选项卡窗口与特定文档请求相关联。

我有从 nsIWebProgress *aWebProgress 获得的有效 DOM 文档指针,这是第一个输入 OnStateChange 的参数。

if ((aStateFlags & STATE_STOP) && (aStateFlags & STATE_IS_DOCUMENT))
{
    nsCOMPtr<nsIDOMWindow> domwin;
    nsCOMPtr<nsIDOMDocument> domDoc;
    aWebProgress->GetDOMWindow(getter_AddRefs(domwin));
    domwin->GetDocument(getter_AddRefs(domDoc));
}

我试图通过 QIing nsIDOMDocument 指针(在我的示例中为 domDoc)来获取 nsIDOMDocumentXBL 指针,但它失败,错误代码为 0x80004002 (2147500034),即 NS_ERROR_NO_INTERFACE。

如何获取文档加载请求对应的tab元素。

谁能帮帮我?

提前致谢, Vaibhav D. Gade。

【问题讨论】:

    标签: c++ firefox firefox-addon


    【解决方案1】:

    如果我正确理解了问题并且您想要一个内容窗口,您可能需要https://developer.mozilla.org/en/Working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window 来获取 chrome 窗口,然后在 chrome 窗口中运行 gBrowser.getBrowserForDocument 的实现。

    如果你停止编写 C++ 并转而使用 JS 来处理这些事情,你会为自己节省很多时间。

    【讨论】:

    • 这里肯定要走 JS。你会省去很多麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多