|
@@ -4,13 +4,14 @@ import { router, WebHeader } from '@kit.ArkUI';
|
|
import { XDialogController } from '../dialog/XDialogController';
|
|
import { XDialogController } from '../dialog/XDialogController';
|
|
import { XDialogList } from '../dialog/XDialogList';
|
|
import { XDialogList } from '../dialog/XDialogList';
|
|
import { picker } from '@kit.CoreFileKit';
|
|
import { picker } from '@kit.CoreFileKit';
|
|
-import { BusinessError } from '@kit.BasicServicesKit';
|
|
|
|
|
|
+import { BusinessError, pasteboard } from '@kit.BasicServicesKit';
|
|
import { ToolsHelper } from '../utils/ToolsHelper';
|
|
import { ToolsHelper } from '../utils/ToolsHelper';
|
|
import { JsParams, XWebController, XWebParams } from '../utils/XWebHelper';
|
|
import { JsParams, XWebController, XWebParams } from '../utils/XWebHelper';
|
|
import { WindowHelper } from '../utils/WindowHelper';
|
|
import { WindowHelper } from '../utils/WindowHelper';
|
|
import { SZYXLocalStorageHelper } from '../utils/SZYXLocalStorageHelper';
|
|
import { SZYXLocalStorageHelper } from '../utils/SZYXLocalStorageHelper';
|
|
import { SZYXLocalStorageKeys } from '../utils/SZYXLocalStorageKeys';
|
|
import { SZYXLocalStorageKeys } from '../utils/SZYXLocalStorageKeys';
|
|
import { XWebManager } from '../utils/XWebManager';
|
|
import { XWebManager } from '../utils/XWebManager';
|
|
|
|
+import { TitleBarBtn } from '../view/SafeView';
|
|
|
|
|
|
@Entry({ routeName: 'XWebview' })
|
|
@Entry({ routeName: 'XWebview' })
|
|
@Component
|
|
@Component
|
|
@@ -27,6 +28,7 @@ export struct XWebview {
|
|
// @State xJsController?: XWebController = (router.getParams() as XWebParams).jsController
|
|
// @State xJsController?: XWebController = (router.getParams() as XWebParams).jsController
|
|
@State closeTag?: string = (router.getParams() as XWebParams).closeTag
|
|
@State closeTag?: string = (router.getParams() as XWebParams).closeTag
|
|
@State showMenu: boolean = (router.getParams() as XWebParams).showMenu ?? false
|
|
@State showMenu: boolean = (router.getParams() as XWebParams).showMenu ?? false
|
|
|
|
+ @State clickMenu?: TitleBarBtn = (router.getParams() as XWebParams).clickMenu
|
|
@State errorInfo: string | null = null
|
|
@State errorInfo: string | null = null
|
|
@State progress: number = 0
|
|
@State progress: number = 0
|
|
@State _uuid?: string = (router.getParams() as XWebParams)._uuid
|
|
@State _uuid?: string = (router.getParams() as XWebParams)._uuid
|
|
@@ -53,11 +55,6 @@ export struct XWebview {
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
- if (this.jsParams?.controller && this._uuidToHtml) {
|
|
|
|
- XWebManager.addOnMessageToWeb(this._uuidToHtml, (msg) => {
|
|
|
|
- this.controller.runJavaScript(msg)
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
aboutToDisappear(): void {
|
|
aboutToDisappear(): void {
|
|
@@ -74,6 +71,7 @@ export struct XWebview {
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
|
|
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
|
|
}
|
|
}
|
|
|
|
+ // this.controller.rele
|
|
}
|
|
}
|
|
|
|
|
|
onBackPress(): boolean | void {
|
|
onBackPress(): boolean | void {
|
|
@@ -120,14 +118,32 @@ export struct XWebview {
|
|
})
|
|
})
|
|
|
|
|
|
Button({ buttonStyle: ButtonStyleMode.TEXTUAL }) {
|
|
Button({ buttonStyle: ButtonStyleMode.TEXTUAL }) {
|
|
- Image($r('sys.media.ohos_ic_public_more'))
|
|
|
|
- .width(26).height(26)
|
|
|
|
|
|
+ if (this.clickMenu?.img) {
|
|
|
|
+ Image(this.clickMenu?.img)
|
|
|
|
+ .width(15).height(15)
|
|
|
|
+ } else if (this.clickMenu?.text) {
|
|
|
|
+ Text(this.clickMenu.text)
|
|
|
|
+ .fontColor(this.clickMenu?.color ?? '#17171A')
|
|
|
|
+ .fontSize(13)
|
|
|
|
+ .textAlign(TextAlign.Center)
|
|
|
|
+ .ellipsisMode(EllipsisMode.END)
|
|
|
|
+ .textOverflow({
|
|
|
|
+ overflow: TextOverflow.Ellipsis
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ Image($r('sys.media.ohos_ic_public_more'))
|
|
|
|
+ .width(26).height(26)
|
|
|
|
+ }
|
|
}.width(65)
|
|
}.width(65)
|
|
.onClick(() => {
|
|
.onClick(() => {
|
|
|
|
+ if (this.clickMenu) {
|
|
|
|
+ this.clickMenu.onClick()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
if (this.dialogController != null) {
|
|
if (this.dialogController != null) {
|
|
this.dialogController.open()
|
|
this.dialogController.open()
|
|
}
|
|
}
|
|
- }).visibility(this.showMenu ? Visibility.Visible : Visibility.Hidden)
|
|
|
|
|
|
+ }).visibility(this.showMenu || this.clickMenu ? Visibility.Visible : Visibility.Hidden)
|
|
}
|
|
}
|
|
.width('100%')
|
|
.width('100%')
|
|
.height(45)
|
|
.height(45)
|
|
@@ -221,6 +237,11 @@ export struct XWebview {
|
|
this.controller.postMessage('__init_port__', [this.ports[0]], '*');
|
|
this.controller.postMessage('__init_port__', [this.ports[0]], '*');
|
|
})
|
|
})
|
|
.onControllerAttached(() => {
|
|
.onControllerAttached(() => {
|
|
|
|
+ if (this.jsParams?.controller && this._uuidToHtml) {
|
|
|
|
+ XWebManager.addOnMessageToWeb(this._uuidToHtml, (msg) => {
|
|
|
|
+ this.controller.runJavaScript(msg)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
if (this.content) {
|
|
if (this.content) {
|
|
try {
|
|
try {
|
|
this.controller.loadData(this.content,
|
|
this.controller.loadData(this.content,
|
|
@@ -338,18 +359,23 @@ export struct XWebview {
|
|
// 标题(可选)
|
|
// 标题(可选)
|
|
title: '选择您的操作',
|
|
title: '选择您的操作',
|
|
// 选择内容列表
|
|
// 选择内容列表
|
|
- values: ['刷新', '浏览器打开', '分享', '复制地址'],
|
|
|
|
|
|
+ values: ['刷新', '浏览器打开', '复制地址'],
|
|
// 用户选择事件
|
|
// 用户选择事件
|
|
onSelected: (index: number, value: string) => {
|
|
onSelected: (index: number, value: string) => {
|
|
if (index === 0) {
|
|
if (index === 0) {
|
|
this.controller.refresh()
|
|
this.controller.refresh()
|
|
|
|
+ } else if (index === 1) {
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
- ToolsHelper.showMessage(`用户选择了第${index}个,内容为:${value}`)
|
|
|
|
|
|
+ pasteboard.getSystemPasteboard()
|
|
|
|
+ .setData(pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, this.controller.getUrl()), () => {
|
|
|
|
+ ToolsHelper.showMessage('已复制到剪切板')
|
|
|
|
+ })
|
|
}
|
|
}
|
|
},
|
|
},
|
|
// 用户取消事件
|
|
// 用户取消事件
|
|
onCancel: () => {
|
|
onCancel: () => {
|
|
- ToolsHelper.showMessage('用户取消操作')
|
|
|
|
|
|
+ // ToolsHelper.showMessage('用户取消操作')
|
|
},
|
|
},
|
|
// 是否可取消(点击空白处,或者物理返回键)
|
|
// 是否可取消(点击空白处,或者物理返回键)
|
|
autoCancel: true
|
|
autoCancel: true
|