[Qtwebengine] Handle frames and web forms with QWebEngine

NoRulez norulez at me.com
Wed Feb 17 15:41:12 CET 2016

Hi Allan,
hi eduard,

I got it. I will post a complete example when everything is working as expected. Maybe the example could also be added to Qt.


> Am 16.02.2016 um 23:00 schrieb NoRulez <norulez at me.com>:
> 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
> _______________________________________________
> QtWebEngine mailing list
> QtWebEngine at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qtwebengine

More information about the QtWebEngine mailing list