WebEngineView:从QWebChannel等待对象开始加载页面

时间:2016-08-03 21:24:22

标签: javascript qt qt5 qtwebengine

我有这个qml文件:

WebEngineView {
  id: webView
  objectName: "webView"
  url: current_url
  anchors.fill: parent
  WebEngineScript {
    id: myscript
    injectionPoint: WebEngineScript.DocumentCreation
    sourceUrl: "myscript.js"
    worldId: WebEngineScript.MainWorld
  }
  WebEngineScript {
    id: qwebchannel
    injectionPoint: WebEngineScript.DocumentCreation
    sourceUrl: "qwebchannel.js"
    worldId: WebEngineScript.MainWorld
  }
  userScripts: [ myscript, qwebchannel ]
}

和这个javascript文件' myscript.js':

var socket = new WebSocket("ws://localhost:12345");

socket.onclose = function()
{
  console.error("web channel closed");
};
socket.onerror = function(error)
{
  console.error("web channel error: " + error);
};
socket.onopen = function()
{
  window.channel = new QWebChannel(socket, function(channel) {                                                                                                                             
    window.custom_obj = channel.objects.custom_obj;
    console.log("custom_obj loaded");                                                                                                                                                                          
  });
};

WebEngineView中加载的页面是一个html文件,我想访问window.custom_obj变量。
问题是页面加载太快而且变量还没有存在。

有没有办法延迟加载页面?
我的目标是确保在页面开始加载时可以访问window.custom_obj。

0 个答案:

没有答案