У меня есть страница, содержащая WebView
. При отображении страницы WebView
будет увеличиваться.
Я хочу запретить увеличение или уменьшить WebView
(до 100%) после отображения.
И еще одна проблема: на веб-странице Банка есть таймер, показывающий время, потраченное на оплату, этот таймер работает в Windows, но не работает в Android. Это означает, что WebView
неправильно загружать страницу (javascrpts, jquery ... не загружен)
PaymentPage.qml
import QtQuick 2.9
import QtWebView 1.1
import QtQuick.Controls 2.2
Page{
property alias url: webview.url
WebView {
id:webview
anchors.fill: parent
onUrlChanged: {// from here paymentManager will khonw where is webview
paymentManager.url=url;
}
onLoadProgressChanged: {
paymentManager.loadProgress=loadProgress;
}
}
}
Когда пользователь нажимает кнопку оплаты, я нажимаюфайл выше StackView
Basket.qml
Page{
Button{
id:btnPay
text: "Pay"
onClicked: {
paymentManager.pay();//send reqest for pay,if succeed => onPayRequestSucceed
}
}
PaymentManager {
id:paymentManager
onPayRequestSucceed: {//the result of paymentManager.pay() method
if(succeed){
paymentPage.url=argUrl;//it will send user to bank page
}
}
onBankPageLoaded: {
sv.push(paymentPage); //if user went to bank page i show payment page(webview page)
}
onResultPageStartToLoad: {
sv.pop();//after payment in bank page ,the bank page will send user to result page(my website page that will save the result)
}
onResultPageLoaded: {
paymentManager.getResult();//after page loaded completely , i get result of payment and show to user in my qt quick application
}
onPaymentFinished: {
dlgPaymentResult.open();
}
}
PaymentPage{
id: paymentPage
visible: false
}
}
Если я нажму PaymentPage.qml
, как показано ниже, у меня нет проблемы с масштабированием, иWebView показывает страницу правильно, но поскольку я не хочу показывать пользователю страницу своего веб-сайта, я не использовал этот способ, но таймер не работает
onBankPageLoaded: {
sv.push("/paymentpage.qml",{paymentManager:paymentManager,url:argUrl);
}
Вывод моего приложения на Android
W linker : /data/data/org.jooya.freshface/qt-reserved-files/qml/QtWebView/libdeclarative_webview.so: unused DT entry: type 0x1d arg 0x1224
W linker : /data/data/org.companyName.appName/qt-reserved-files/qml/QtWebView/libdeclarative_webview.so: unsupported flags DT_FLAGS_1=0x81
I WebViewFactory: Loading com.google.android.webview version 51.0.2704.81 (code 270408100)
D ResourcesManager: For user 0 new overlays fetched Null
W System : ClassLoader referenced unknown path: /system/app/WebViewGoogle/lib/arm
I cr_LibraryLoader: Time to load native libraries: ۱۳ ms (timestamps ۹۱۵۷-۹۱۷۰)
I cr_LibraryLoader: Expected native library version number "51.0.2704.81", actual native library version number "51.0.2704.81"
W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/org.companyName.appName/shared_prefs/WebViewChromiumPrefs.xml.bak
V WebViewChromiumFactoryProvider: Binding Chromium to main looper Looper (main, tid 1) {b9bfc31}
I cr_LibraryLoader: Expected native library version number "51.0.2704.81", actual native library version number "51.0.2704.81"
I chromium: [INFO:library_loader_hooks.cc(143)] Chromium logging enabled: level = 0, default verbosity = 0
I cr_BrowserStartup: Initializing chromium process, singleProcess=true
E ApkAssets: Error while loading asset assets/natives_blob_64.bin: java.io.FileNotFoundException: assets/natives_blob_64.bin
E ApkAssets: Error while loading asset assets/snapshot_blob_64.bin: java.io.FileNotFoundException: assets/snapshot_blob_64.bin
D libEGL : eglInitialize EGLDisplay = 0xbec6344c
D : ro.exynos.dss isEnabled: 0
W cr_media: Requires BLUETOOTH permission
D ConnectivityManager: requestNetwork; getAppId(CallingUid) : 10958, CallingPid : 14227
D cr_Ime : [InputMethodManagerWrapper.java:30] Constructor
W cr_AwContents: onDetachedFromWindow called when already detached. Ignoring
D cr_Ime : [InputMethodManagerWrapper.java:59] isActive: false
W System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/org.jooya.freshface/shared_prefs/org.jooya.freshface_preferences.xml.bak
D ConnectivityManager: requestNetwork; getAppId(CallingUid) : 10958, CallingPid : 14227
D SecWifiDisplayUtil: Metadata value : SecSettings2
I cr_Ime : ImeThread is not enabled.
E libEGL : validate_display:255 error 3008 (EGL_BAD_DISPLAY)
D libEGL : eglInitialize EGLDisplay = 0x941023dc
W AudioCapabilities: Unsupported mime audio/mpeg-L1
W AudioCapabilities: Unsupported mime audio/mpeg-L2
W AudioCapabilities: Unsupported mime audio/x-ms-wma
W AudioCapabilities: Unsupported mime audio/x-ima
W VideoCapabilities: Unrecognized profile/level 32768/2 for video/mp4v-es
W VideoCapabilities: Unrecognized profile 2130706433 for video/avc
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unsupported mime video/wvc1
W VideoCapabilities: Unsupported mime video/x-ms-wmv
W VideoCapabilities: Unrecognized profile/level 32768/2 for video/mp4v-es
W VideoCapabilities: Unsupported mime video/wvc1
W VideoCapabilities: Unsupported mime video/x-ms-wmv
W VideoCapabilities: Unsupported mime video/x-ms-wmv7
W VideoCapabilities: Unsupported mime video/x-ms-wmv8
W VideoCapabilities: Unsupported mime video/mp43
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unrecognized profile 2130706434 for video/avc
W VideoCapabilities: Unrecognized profile/level 32768/2 for video/mp4v-es
I VideoCapabilities: Unsupported profile 4 for video/mp4v-es
W VideoCapabilities: Unsupported mime video/sorenson
D : ro.exynos.dss isEnabled: 0
W cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 14227
D cr_Ime : [InputMethodManagerWrapper.java:59] isActive: false
W cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 14227
D cr_Ime : [InputMethodManagerWrapper.java:59] isActive: false
I chromium: [INFO:CONSOLE(346)] "Mixed Content: The page at 'https://bpm.shaparak.ir/pgwchannel/payment.mellat?RefId=D1BE43CB1FC76E95' was loaded over a secure connection, but contains a form which targets an insecure endpoint 'http://mywebsite.ir/order/result?id=2'. This endpoint should be made available over a secure connection.", source: https://bank.ir/pghannel/payment?RefId=D1BE43CB (346)
I chromium: [INFO:CONSOLE(2)] "jQuery.Deferred exception: (b + "").padStart is not a function", source: https://bpm.shaparak.ir/pgwchannel/js/jquery.min.js?v=1 (2)
I chromium: [INFO:CONSOLE(2)] "Uncaught TypeError: (b + "").padStart is not a function", source: https://bpm.shaparak.ir/pgwchannel/js/jquery.min.js?v=1 (2)
V ActivityThread: updateVisibility : ActivityRecord{8354c54 token=android.os.BinderProxy@8278698 {org.jooya.freshface/org.companyName.appName.AppActivity}} show : true
Я думаю, мне нужно изменить настройку WebView
, как показано ниже, но я не знаю, как это сделать в qml?
webview.settings.setDomStorageEnabled(true);