|
@@ -6,7 +6,7 @@ import { XDialogList } from '../dialog/XDialogList';
|
|
|
import { picker } from '@kit.CoreFileKit';
|
|
|
import { BusinessError } from '@kit.BasicServicesKit';
|
|
|
import { ToolsHelper } from '../utils/ToolsHelper';
|
|
|
-import { XWebController, XWebParams } from '../utils/XWebHelper';
|
|
|
+import { JsParams, XWebController, XWebParams } from '../utils/XWebHelper';
|
|
|
import { WindowHelper } from '../utils/WindowHelper';
|
|
|
import { SZYXLocalStorageHelper } from '../utils/SZYXLocalStorageHelper';
|
|
|
import { SZYXLocalStorageKeys } from '../utils/SZYXLocalStorageKeys';
|
|
@@ -18,10 +18,12 @@ export struct XWebview {
|
|
|
// 手机号
|
|
|
@State headers?: Array<WebHeader> = (router.getParams() as XWebParams).headers
|
|
|
@State url?: string = (router.getParams() as XWebParams).url
|
|
|
+ @State jsParams?: JsParams = (router.getParams() as XWebParams).jsParams
|
|
|
@State zoomAccess?: boolean = (router.getParams() as XWebParams).zoomAccess
|
|
|
@State content?: string = (router.getParams() as XWebParams).content
|
|
|
@State title?: string = (router.getParams() as XWebParams).title
|
|
|
@State xController?: XWebController = (router.getParams() as XWebParams).controller
|
|
|
+ // @State xJsController?: XWebController = (router.getParams() as XWebParams).jsController
|
|
|
@State closeTag?: string = (router.getParams() as XWebParams).closeTag
|
|
|
@State showMenu: boolean = (router.getParams() as XWebParams).showMenu ?? false
|
|
|
@State errorInfo: string | null = null
|
|
@@ -35,7 +37,6 @@ export struct XWebview {
|
|
|
aboutToAppear(): void {
|
|
|
SZYXLocalStorageHelper.storage.setOrCreate(SZYXLocalStorageKeys.XWebViewCLose, undefined)
|
|
|
webview.WebviewController.setWebDebuggingAccess(true);
|
|
|
-
|
|
|
if (this._uuidToHtml) {
|
|
|
XWebManager.addOnMessageToHtml(this._uuidToHtml, (msg) => {
|
|
|
if (this.ports && this.ports[1]) {
|
|
@@ -43,6 +44,11 @@ export struct XWebview {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+ if (this.jsParams?.controller && this._uuidToHtml) {
|
|
|
+ XWebManager.addOnMessageToWeb(this._uuidToHtml, (msg) => {
|
|
|
+ this.controller.runJavaScript(msg)
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
aboutToDisappear(): void {
|
|
@@ -51,6 +57,14 @@ export struct XWebview {
|
|
|
}
|
|
|
XWebManager.removeOnMessage(this._uuid)
|
|
|
XWebManager.removeOnMessageToHtml(this._uuidToHtml)
|
|
|
+ if (this._uuidToHtml) {
|
|
|
+ XWebManager.objs.delete(this._uuidToHtml)
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ this.controller.deleteJavaScriptRegister(this.jsParams?.name);
|
|
|
+ } catch (error) {
|
|
|
+ console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
onBackPress(): boolean | void {
|
|
@@ -118,6 +132,12 @@ export struct XWebview {
|
|
|
|
|
|
Web({ src: this.url ?? 'www.example.com', controller: this.controller })
|
|
|
.javaScriptAccess(true)
|
|
|
+ .javaScriptProxy({
|
|
|
+ object: XWebManager.objs.get(this._uuidToHtml),
|
|
|
+ name: this.jsParams?.name,
|
|
|
+ methodList: this.jsParams?.methodList,
|
|
|
+ controller: this.controller
|
|
|
+ })
|
|
|
.domStorageAccess(true)
|
|
|
.geolocationAccess(true)
|
|
|
.width('100%')
|
|
@@ -312,7 +332,11 @@ export struct XWebview {
|
|
|
values: ['刷新', '浏览器打开', '分享', '复制地址'],
|
|
|
// 用户选择事件
|
|
|
onSelected: (index: number, value: string) => {
|
|
|
- ToolsHelper.showMessage(`用户选择了第${index}个,内容为:${value}`)
|
|
|
+ if (index === 0) {
|
|
|
+ this.controller.refresh()
|
|
|
+ } else {
|
|
|
+ ToolsHelper.showMessage(`用户选择了第${index}个,内容为:${value}`)
|
|
|
+ }
|
|
|
},
|
|
|
// 用户取消事件
|
|
|
onCancel: () => {
|