Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML WebEngineView.runJavaScript无法运行HTML Java脚本方法_Qt_Qml_Qtwebengine_Qqmlapplicationengine - Fatal编程技术网

Qt QML WebEngineView.runJavaScript无法运行HTML Java脚本方法

Qt QML WebEngineView.runJavaScript无法运行HTML Java脚本方法,qt,qml,qtwebengine,qqmlapplicationengine,Qt,Qml,Qtwebengine,Qqmlapplicationengine,工作环境:Windows 7 64位,QT 5.8 64位,编译器:VS2015 64位 使用WebEngineView我正在加载HTML页面,HTML有脚本功能 function OnClick() { document.getElementById('txtName').value = "10"; } 但使用webEngine.runJavaScript(“document.OnClick”,函数(result){console.log(“文本框值设置为10”);} 它无法执行函数

工作环境:Windows 7 64位,QT 5.8 64位,编译器:VS2015 64位

使用WebEngineView我正在加载HTML页面,HTML有脚本功能

function OnClick()
{
    document.getElementById('txtName').value = "10";
}
但使用webEngine.runJavaScript(“document.OnClick”,函数(result){console.log(“文本框值设置为10”);}

它无法执行函数。 根据我的例子,文本框的值应该是10

main.qml代码:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtWebEngine 1.4


ApplicationWindow {
    id: mainWindow
    width: 1024
    height: 550
    visible: true
    title: qsTr("Render Web Pages")

    WebEngineView {
        id: webEngine
        anchors.fill: parent
        url: "qrc:/Page1.html"
        settings.javascriptCanAccessClipboard: true
        settings.javascriptCanOpenWindows : true
        settings.javascriptEnabled: true
        settings.pluginsEnabled: true
        settings.autoLoadImages: true

        onLoadingChanged: {
            switch(loadRequest.status){
            case  WebEngineLoadRequest.LoadStartedStatus:
                console.log("LoadStartedStatus");
                webEngine.runJavaScript("document.OnClick", function(result) { console.log("SW->Script Runs"); });
                break;
            }

        }
    }
}
<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">
    function OnClick()
    {
        document.getElementById('txtName').value = "10";
    }
    </script>
</head>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>
<input type="text" id="txtName"/>
<a href="#" onclick="OnClick()">Click me</a>
</body>
</html>
HTML页面代码:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtWebEngine 1.4


ApplicationWindow {
    id: mainWindow
    width: 1024
    height: 550
    visible: true
    title: qsTr("Render Web Pages")

    WebEngineView {
        id: webEngine
        anchors.fill: parent
        url: "qrc:/Page1.html"
        settings.javascriptCanAccessClipboard: true
        settings.javascriptCanOpenWindows : true
        settings.javascriptEnabled: true
        settings.pluginsEnabled: true
        settings.autoLoadImages: true

        onLoadingChanged: {
            switch(loadRequest.status){
            case  WebEngineLoadRequest.LoadStartedStatus:
                console.log("LoadStartedStatus");
                webEngine.runJavaScript("document.OnClick", function(result) { console.log("SW->Script Runs"); });
                break;
            }

        }
    }
}
<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">
    function OnClick()
    {
        document.getElementById('txtName').value = "10";
    }
    </script>
</head>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>
<input type="text" id="txtName"/>
<a href="#" onclick="OnClick()">Click me</a>
</body>
</html>

函数OnClick()
{
document.getElementById('txtName')。value=“10”;
}
我的第一个标题
我的第一段

有什么线索可以解释为什么它无法将文本框中的值设置为10


这里是我的git。

WebEngineLoadRequest.LoadStartedStatus
似乎不是尝试执行Javascript的正确时机。您是否尝试过
WebEngineLoadedRequest.LoadSucceededStatus
?我尝试过WebEngineLoadedRequest.LoadSucceededStatus,但执行JavaScript失败。有什么线索我遗漏了吗?
webengineloaderquest.LoadStartedStatus
似乎不是尝试执行Javascript的合适时机。您是否尝试过
WebEngineLoadedRequest.LoadSucceededStatus
?我尝试过WebEngineLoadedRequest.LoadSucceededStatus,但执行JavaScript失败。你知道我遗漏了什么吗?