[Qtwebengine] Handle frames and web forms with QWebEngine

NoRulez norulez at me.com
Tue Feb 16 23:00:43 CET 2016


But how can i fire a javascript signal if an iframe content is changed? What I'm doing with the variable "var content"?
So what functions did I need to call? If I am the owner of the website I could maybe inject something like "<body onload=''>". I don't want to do a lot of JavaScript coding because I hate JavaScript and I'm a c++ coder. My problem is that I need to port a WebKit app to the webengine.

The only thing why I need it is because the Qt guys removed WebKit and replaced it with this ... stuff (which is much more complicated if someone doesn't code JavaScript at all)

Best Regards

> Am 16.02.2016 um 17:33 schrieb Allan Sandfeld Jensen <allan.jensen at theqtcompany.com>:
> 
> Even without modifying the html site, you can run javascript on it, using the 
> QWebEnginePage::runJavaScript API. Just be aware that it is asynchronous, so 
> you get the results as a callback.
> 
> We included an example of how to use qtwebchannel in Qt 5.6, check out the  
> markdowneditor example. It basically boils down to this on the C++side:
>    QWebChannel *channel = new QWebChannel(this);
>    channel->registerObject(QStringLiteral("content"), &m_content);
>    page->setWebChannel(channel);
> 
> And including qwebchannel.js on the JavaScript side. And then using code like 
> this to get to the "content" object:
>  new QWebChannel(qt.webChannelTransport,
>    function(channel) {
>      var content = channel.objects.content;
>    }
>  }
> 
> 
> Using qtwebchannel on foreign content is harder, and until Qt 5.7 brings a 
> security risk in that any objects you inject can be reached by the remote 
> content too. The main difference to the markdowneditor example though is just 
> that you need to inject qwebchannel.js using either runJavaScript on the new 
> QWebEngineScript api. 
> 
> Best regards
> 
>> On Tuesday 16 February 2016, NoRulez wrote:
>> Since it isn't documented very well.
>> Could you please give me a small example.
>> 
>> Best regards
>> 
>>> Am 16.02.2016 um 00:17 schrieb NoRulez <norulez at me.com>:
>>> 
>>> But i doesn't have access to modify the html site, I have only an url.
>>> 
>>> I don't know how to work with QWebChannel, since I'm not familiar with
>>> JavaScript and I doesn't find out which function I can use from the
>>> qwebchannel.js
>>> 
>>> Could you please help me?
>>> Sorry but it was much easier with WebKit. :-(
>>> 
>>> Best Regards
>>> 
>>>>> Am 15.02.2016 um 22:10 schrieb Allan Sandfeld Jensen
>>>>> <allan.jensen at theqtcompany.com>:
>>>>> 
>>>>> On Thursday 04 February 2016, NoRulez wrote:
>>>>> Hello,
>>>>> 
>>>>> 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)
>>>>> 
>>>>> Thanks in advance
>>>> 
>>>> I would suggest handling web-forms it in JavaScript. To get a signal
>>>> from JavaScript, you should check out QtWebChannel, with that you can
>>>> install QObjects in DOM then call any function from an event listener.
>>>> 
>>>> Best regards
>>>> `Allan
>>> 
>>> _______________________________________________
>>> QtWebEngine mailing list
>>> QtWebEngine at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/qtwebengine
> 
> 
> -- 
> 
> The Qt Company
> Rudower Chausse 13, 12489 D-Berlin
> 
> The Qt Company is a group company of Digia Plc, 
> Valimotie 21, FI-00380 Helsinki Finland



More information about the QtWebEngine mailing list