3

在 QtQuick 1.0 和 QtWebKit 1.0 中,我可以在页面准备好后执行 onLoadFinished 函数。如何分别在版本 2 和 3 中执行此操作?

文档中有一个 statusChanged。我不明白如何使用它。

以前我有:

import QtQuick 2.0
import QtWebKit 3.0

WebView {
    width: 700
    height: 800

    url:"http://www.yahoo.com"
    settings.developerExtrasEnabled : true


    id: webView
    objectName: "myWebView"




    onLoadFinished: evaluateJavaScript("window.setTimeout('window.location.reload()',5000);")

}

但它显示错误:
无法分配给不存在的属性“onLoadFinished”

4

1 回答 1

4

您必须使用onLoadingChanged信号和 loadRequest 对象来检查确切的状态:http: //qt-project.org/doc/qt-5.0/qtwebkit/qml-qtwebkit3-webview.html#onLoadingChanged-signal

import QtQuick 2.0
import QtWebKit 3.0

WebView {
    width: 700
    height: 800

    url:"http://google.com"

    id: webView
    objectName: "myWebView"

    onLoadingChanged: {
        console.log("onLoadingChanged: status=" + loadRequest.status);
        if (loadRequest.status == WebView.LoadStartedStatus) 
            console.log("Loading started...");
        if (loadRequest.status == WebView.LoadFailedStatus) {
           console.log("Load failed! Error code: " + loadRequest.errorCode);
           if (loadRequest.errorCode === NetworkReply.OperationCanceledError)
               console.log("Load cancelled by user");
        } 
        if (loadRequest.status == WebView.LoadSucceededStatus) 
            console.log("Page loaded!");
    }

}

onLoadingChanged信号在任何页面加载开始、结束或失败时出现。loadRequest 提供了各种只读参数:

  • url:正在加载的资源的位置。
  • status:反映三种负载状态之一:LoadStartedStatus、LoadSucceededStatus 或 LoadFailedStatus。请参阅 WebView::LoadStatus。
  • errorString:加载错误的描述。
  • errorCode:HTTP 错误代码。
  • errorDomain:高级错误类型,NetworkErrorDomain、HttpErrorDomain、InternalErrorDomain、DownloadErrorDomain 或 NoErrorDomain 之一。请参阅 WebView::ErrorDomain。
于 2012-12-27T22:58:32.573 回答