2017-06-30 9 views
0

html入力フィールドが表示QWebEngineViewにフォーカスされるとすぐに、カスタム入力デバイスをタッチスクリーンに表示したいとします。したがって、私は入力デバイスオブジェクトをQWebChannel経由でクライアント側のJavasciptに公開しようとしました。これにより、入力フィールドがフォーカスされるとすぐに入力デバイスのshowメソッドを呼び出すことができました。QWebChannelを使用してqmlオブジェクトをWebサイト/ JavaScriptに公開する

Uncaught TypeError: Cannot read property 'send' of undefined at line 60

Uncaught ReferenceError: QWebChannel is not defined at line 2

さらに私はQWebChannelのパラメータとしてnavigator.qtWebChannelTransport代わりのqt.webChannelTransportを使用したときに確認していない:

はしかし、現在、私は、次の2つのいずれかのエラーを取得します。

Window.qml

ApplicationWindow { 

    WebView { 
     id: webView 
     anchors.fill: parent 

     // Register keyboard as web channel object. 
     webChannel.registeredObjects: [myObject] 
    } 

    MyObject { 
     id: myObject 
     WebChannel.id: "myWebObject" 
    } 
} 

WebView.qml

WebEngineView { 

    // Load web channel and input method handling scripts. 
    userScripts: [ 
     WebEngineScript { 
      injectionPoint: WebEngineScript.DocumentCreation 
      name: "QWebChannel" 
      sourceUrl: "qrc:///qtwebchannel/qwebchannel.js" 
     }, 

     WebEngineScript { 
      injectionPoint: WebEngineScript.DocumentReady 
      name: "MyObjectInjector" 
      sourceUrl: "qrc:/myscript.js" 
     } 
    ] 
} 

myscript.js

window.channel = new QWebChannel(navigator.qtWebChannelTransport, function(channel) { 
    var inputs = window.document.getElementsByTagName('INPUT'); 

    var index; 
    for(index=0; index < inputs.length; index++) { 
     inputs[index].onfocus = function() { 
      console.log("Input focused"); 
     }; 
    } 
}); 

答えて

0

Uncaught ReferenceError: QWebChannel is not defined at line 2

QWebChannelはmyscript.jsに公開されていないと思います。 WebEngineScriptでworldId: WebEngineScript.MainWorldを試してください。

Furthermore I am not sure when to use navigator.qtWebChannelTransport instead of qt.webChannelTransport as parameter for QWebChannel.

qt.webChannelTransport

WebEngineScript { 
     injectionPoint: WebEngineScript.DocumentCreation 
     worldId: WebEngineScript.MainWorld 
     name: "QWebChannel" 
     sourceUrl: "qrc:///qtwebchannel/qwebchannel.js" 
    }, 

は正しいように思えます。 https://bugreports.qt.io/browse/QTBUG-52090を参照してください。

関連する問題