首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取iframe/frame QWebElement的QWebFrame?

如何获取iframe/frame QWebElement的QWebFrame?
EN

Stack Overflow用户
提问于 2012-11-02 12:24:48
回答 2查看 3.4K关注 0票数 4

我有一个简单的Qt应用程序,它使用QtWebkit。我正在用很多嵌套的IFRAME标签加载复杂的页面。我想遍历完整的DOM树(就像Chrome浏览器在debug-panel中做的那样),包括iframe的内容。

我的代码是:

代码语言:javascript
复制
QWebElement doc = ui->webView->page()->mainFrame()->documentElement();
QWebElement iframe = doc.findFirst("iframe[id=someid]");
QWebFrame *webFrame = ....? // how to get the QWebFrame for an iframe/frame QWebElement?

注意:我可以遍历所有框架(包括嵌套):

代码语言:javascript
复制
void MainWindow::renderFramesTree(QWebFrame *frame, int indent)
{
    QString s;
    s.fill(' ', indent * 4);
    ui->textLog->appendPlainText(s + " " + frame->frameName());
    foreach (QWebFrame *child, frame->childFrames())
        renderFramesTree(child, indent + 1);
}

但我的问题与此无关。我需要获取对应的iframe-QWebElement的QWebFrame*。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-11-15 20:39:23

每个QWebFrame都有QList<QWebFrame *> QWebFrame::childFrames () const方法。每个帧也有QString QWebFrame::frameName () const。将两者结合起来可能会让你找到你需要的东西。

代码语言:javascript
复制
QWebFrame * frameImLookingFor = NULL;
foreach(QWebFrame * frame, ui->webView->page()->mainFrame()->childFrames())
{
    if (frame->frameName() == QLatin1String("appFrame"))
    {
        frameImLookingFor = frame;
        break;
    }
}

if (frameImLookingFor)
{
    // do what you need
}
票数 2
EN

Stack Overflow用户

发布于 2015-05-08 05:20:55

  • 在当前框架上运行选择器
  • 如果它返回一些好的东西我们发现我们的webframe在当前框架上,让我们称这个元素为X:
    • 现在使用选择器"iframe,INDEX

“从当前页面获取所有框架元素

  • 循环所有这些元素并尝试将它们与X frame进行匹配这样你就能够在webframe中找到X框架的确切索引你现在可以使用该框架将焦点放在子框架上

  • 否则,这意味着在所有子帧中找不到选择器
    • 循环,并对每个子帧重复整个过程

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13189296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档