I played a little bit with JavaScript and QWebChannel but I can't get it to work (I'm not familiar with JavaScript) which means that I tried to figure out which frame is created and trigger a signal from within JavaScript. i think the parsing stuff is easier with regex in c++. Could someone please help me to handle iframes correctly with QWebEngine. I think those guys who has desired to replace QWebKit with QWebEngine should see the problem.
Thanks in advance Best Regards > Am 02.12.2015 um 10:36 schrieb NoRulez <noru...@me.com>: > > If someone is interested. I found a solution which avoid the use of > QWebEngine/QWebChannel and JavaScript stuff and is a lot more easy and > straight forward to use. > > connect(m_pWebEngineView, &QWebEngineView::loadFinished, [=]() { > m_pWebEngineView->page()->runJavaScript("window.frames[\"MyFrame\"].document.body.innerHTML", > [=](const QVariant &var) { > const QString content = var.toString(); > // Parse the content with QRegularExpression > // Here the following options are useful: QRegularExpression::MultilineOption > | QRegularExpression::DotMatchesEverythingOption > }); > }); > > Best regards > >> Am 27.11.2015 um 09:48 schrieb Koehne Kai <kai.koe...@theqtcompany.com>: >> >> >> >>> -----Original Message----- >>> From: NoRulez [mailto:noru...@me.com] >>> Sent: Friday, November 27, 2015 9:35 AM >>> To: Koehne Kai <kai.koe...@theqtcompany.com> >>> Cc: Qt Project MailingList <interest@qt-project.org> >>> Subject: Re: [Interest] Handle frames and web forms with QWebEngine >>> >>> This is not my tree, it's a simple webpage/webform. But it seems that the >>> new >>> "webengine" can't handle simple tasks like this. >> >> I think I already mentioned several approaches to do this. >> >>> I don't think that the following statement is too complex: >>> document.getElementsByTagName('input') >> >> The statement itself is not complex. What it returns might be too complex >> for a simple transformation into a QVariant, though. >> >> Regards >> >> Kai >> >>> Best regards >>> >>>>> Am 25.11.2015 um 13:08 schrieb Koehne Kai >>>> <kai.koe...@theqtcompany.com>: >>>> >>>> >>>> >>>>> -----Original Message----- >>>>> From: NoRulez [mailto:noru...@me.com] >>>>> Sent: Tuesday, November 24, 2015 2:37 PM >>>>> To: Koehne Kai <kai.koe...@theqtcompany.com> >>>>> Cc: Qt Project MailingList <interest@qt-project.org> >>>>> Subject: Re: [Interest] Handle frames and web forms with QWebEngine >>>>> >>>>> No one? >>>>> >>>>> Isn't it supported to return simple objects? >>>> >>>> The code that does the transformation can be found in >>> web_contents_adapter.cpp, function fromJSValue(): >>>> >>>> http://code.woboq.org/qt5/qtwebengine/src/core/web_contents_adapter.cp >>>> p.html >>>> >>>> Not sure how the JS representation of your tree is. >>>> >>>> A possible workaround might be to serialize the data structures, and >>>> return a >>> JSON string (e.g. by using JSON.stringify()). >>>> >>>> Regards >>>> >>>> Kai >>>> >>>>> Best Regards >>>>> >>>>> >>>>>> Am 19.11.2015 um 17:29 schrieb NoRulez <noru...@me.com>: >>>>>> >>>>>> I tried to use m_pWebEngineView->page()->runJavaScript() after the >>>>>> site is >>>>> loaded, but it returns QVariant(QVariantMap, QMap()) for most of the time. >>>>>> >>>>>> It seems that it can handle only simple queries like >>>>>> "document.title" but not for >>>>> example "window.frames['MyFrame].document.forms[0].elements". >>>>>> With which I expect a list of maps or similar to get the form elements. >>>>>> >>>>>> Best Regards >>>>>> >>>>>>> Am 18.11.2015 um 16:40 schrieb Koehne Kai >>>>> <kai.koe...@theqtcompany.com>: >>>>>>> >>>>>>> >>>>>>> >>>>>>>> -----Original Message----- >>>>>>>> From: NoRulez [mailto:noru...@me.com] >>>>>>>> Sent: Wednesday, November 18, 2015 12:20 PM >>>>>>>> To: Koehne Kai <kai.koe...@theqtcompany.com> >>>>>>>> Cc: Qt Project MailingList <interest@qt-project.org> >>>>>>>> Subject: Re: [Interest] Handle frames and web forms with >>>>>>>> QWebEngine >>>>>>>> >>>>>>>> Is there an example for such approach? >>>>>>> >>>>>>> Probably not for your specific request, but there's the 'fancybrowser' >>>>> example that shows how to inject JavaScript: >>>>>>> >>>>>>> https://doc-snapshots.qt.io/qt5-5.6/qtwebengine-webenginewidgets-fa >>>>>>> nc >>>>>>> ybrowser-example.html >>>>>>> >>>>>>> We recently also just added a 'markdowneditor' example >>>>>>> demonstrating the >>>>> use of QWebChannel: >>>>>>> >>>>>>> https://doc-snapshots.qt.io/qt5-5.6/qtwebengine-webenginewidgets-ma >>>>>>> rk >>>>>>> downeditor-example.html >>>>>>> >>>>>>> Regards >>>>>>> >>>>>>> Kai >>>>>>> >>>>>>> >>>>>>>>>> Am 18.11.2015 um 10:12 schrieb Koehne Kai >>>>>>>>> <kai.koe...@theqtcompany.com>: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> -----Original Message----- >>>>>>>>>> From: Interest [mailto:interest-boun...@qt-project.org] On >>>>>>>>>> Behalf Of NoRulez >>>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> What is the preferred way to handle web forms (iterate over it >>>>>>>>>> like QWebCollection does in QWebKit), search for frames by name >>>>>>>>>> and get notified when a frame is created? (Was a signal in >>>>>>>>>> QWebKit) >>>>>>>>> >>>>>>>>> The general approach is to load/inject JavaScript into the page >>>>>>>>> that takes care >>>>>>>> of this, and communicates with the C++ world either by return >>>>>>>> value, or QWebChannel. >>>>>>>>> >>>>>>>>> Hope this helps, >>>>>>>>> >>>>>>>>> Kai >>>>>> _______________________________________________ >>>>>> Interest mailing list >>>>>> Interest@qt-project.org >>>>>> http://lists.qt-project.org/mailman/listinfo/interest > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest