XWebHelper.ets 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { router } from '@kit.ArkUI';
  2. import { BusinessError } from '@kit.BasicServicesKit';
  3. import { LogHelper } from '../../../../Index';
  4. import { baseEncode } from '../util/base64Util';
  5. import { ToolsHelper } from './ToolsHelper';
  6. import { XWebManager } from './XWebManager';
  7. const XWebview = import('../pages/XWebview');
  8. export interface XWebController {
  9. sendMessage: (message: string) => void
  10. }
  11. export interface XWebParams {
  12. url?: string
  13. zoomAccess?: boolean
  14. content?: string
  15. title?: string
  16. showMenu?: boolean
  17. closeTag?: string
  18. watermarkTxt?: string
  19. _uuid?: string
  20. _uuidToHtml?: string
  21. onMessage?: (message: string) => void
  22. controller?: XWebController
  23. }
  24. export class XWebHelper {
  25. private constructor() {
  26. }
  27. /**
  28. * 打开web页面,加载h5
  29. * @param params
  30. */
  31. public static openWeb(params: XWebParams): Promise<boolean> {
  32. if (params.onMessage) {
  33. params._uuid = XWebManager.addOnMessage(params.onMessage)
  34. }
  35. if (params.controller) {
  36. params._uuidToHtml = ToolsHelper.getUuid()
  37. params.controller.sendMessage = (msg) => {
  38. XWebManager.sendMessageToHtml(msg)
  39. }
  40. }
  41. return new Promise((resolve) => {
  42. router.pushNamedRoute({
  43. name: 'XWebview',
  44. params: params
  45. }, router.RouterMode.Single).then(() => {
  46. LogHelper.info('Succeeded in jumping to the XWebview page.')
  47. resolve(true)
  48. }).catch((err: BusinessError) => {
  49. resolve(false)
  50. LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  51. ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  52. })
  53. })
  54. }
  55. public static openPreview(params: XWebParams): Promise<boolean> {
  56. params.url =
  57. `https://mdtdemo.51trust.com/preview/onlinePreview?url=${baseEncode(params.url)}&watermarkTxt=${encodeURI(params.watermarkTxt ??
  58. '')}`
  59. return new Promise((resolve) => {
  60. router.pushNamedRoute({
  61. name: 'XWebview',
  62. params: params
  63. }, router.RouterMode.Single).then(() => {
  64. LogHelper.info('Succeeded in jumping to the XWebview page.')
  65. resolve(true)
  66. }).catch((err: BusinessError) => {
  67. resolve(false)
  68. LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  69. ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  70. })
  71. })
  72. }
  73. }