javascript - 使用 qml 键盘处理网页的文本元素

标签 javascript html qt webkit qml

我正在使用 Qt Web Kit 1.0 打开网页。我有一个可用的键盘,用 qml 编写。我想使用这个键盘将文本填充到 HTML 页面的文本框中。

假设,我打开了 gmail.com。现在,我要填写用户名和密码。但是,当我单击网页的此文本元素时,我应该处理什么事件来调出键盘供用户使用?我到底要将键盘生成的文本发送到哪里,以便将其设置到该页面的用户名字段中?

最佳答案

您可以通过评估 WebView 中的一些自定义 JavaScript 代码来更改文本字段值:

webViewId.evaluateJavaScript("document.getElementById('textInputId').value = '" + yourValueString + "'")

文档 here .

编辑: 键盘激活可以引用javaScriptWindowObjects属性:您可以激活它,例如,在正文 onload 事件中,或在文本字段 onfocus 事件中。

编辑2: 我添加一个简单的例子来解释我想说的:

我假设您有一个名为 Keyboard 的 QML 自定义项目,并且该项目有一个在按下按键时调用的信号 onKeyPress

你的代码应该是这样的:

WebView {
    id: webViewId
    javaScriptWindowObjects: QtObject {
        WebView.windowObjectName: "qml"

        function showKeyboard {
            keyboardId.opacity = 1;
        }
    }

    onLoadFinished: {
        evaluateJavaScript("document.getElementById('textInputId').onfocus = window.qml.showKeyboard;")
    }
}

Keyboard {
    id: keyboardId
    opacity: 0

    onKeyPress: {
        webViewId.evaluateJavaScript("document.getElementById('textInputId').value += '" + keyValue + "'")
    }
}

关于javascript - 使用 qml 键盘处理网页的文本元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341721/

相关文章:

html - 在 Firefox 的 Flexbox 容器中内容忽略最大宽度?

c++ - 为什么 opengl 中的 gl_FragCoord.z 与深度缓冲区之一不同?

javascript - 在javascript中捕获phonegap GapViewClient.onReceivedError

javascript - 在 Android 浏览器中重定向到 document.ready 上的另一个页面

javascript - 将函数从 getActiveSheet() 更改为 getSheetByName ("mySheet")

html - 如何使用angular 2 (v2.0.0-beta.15)实现拖放

javascript - 悬停和/或单击,自动对焦输入字段

html - 使用 CSS 的水平菜单

qt - 如何更改 Qt 5.9 虚拟键盘布局/区域设置

c++ - 2 QGraphicsPixmapItems 之间的 QT 碰撞检测