自定义 class 需要访问 WebComponent 中的 webViewController。

​自定义 class 中持有了 WebComponent 中的 webViewController,当前端代码调用invoke方法与webview通信时,只要invoke方法中使用了当前类的this,应用就会崩溃,代码片段如下:

// 自定义类WebViewBridge: 
import web_webview from '@ohos.web.webview'; 
 
export default class WebViewBridge { 
  webViewController: web_webview.WebviewController; 
 
  // 是否已经执行完了onFirstScript方法,默认未执行 
 
  constructor(webviewController: web_webview.WebviewController) { 
    this.webViewController = webviewController; 
  } 
 
  public invoke(){ 
    console.log('-----', !this) 
    this.webViewController.runJavaScript(""); 
  } 
} 
 
// webview组件类: 
import web_webview from '@ohos.web.webview'; 
import WebViewBridge from './WebViewBridge'; 
 
@Entry 
@Component 
struct WebComponent { 
  webviewController: web_webview.WebviewController = new web_webview.WebviewController(); 
  webViewBridge: WebViewBridge = new WebViewBridge(this.webviewController); 
 
  aboutToAppear(){ 
    web_webview.WebviewController.setWebDebuggingAccess(true); 
  } 
  build() { 
    Column() { 
      // 组件创建时,通过$rawfile加载本地文件local.html 
      Web({ src: $rawfile('template.html'), controller: this.webviewController }) 
        .javaScriptAccess(true) 
        .javaScriptProxy({object: this.webViewBridge, name: 'NativeBridge', 
          methodList: [ 
          'invoke', 
          ], controller: this.webviewController}, 
        ) 
        .onPageBegin(() => { 
          this.webviewController.setCustomUserAgent('Android OpenHarmony') 
          console.log('------>onPageBegin') 
        }) 
    } 
  } 
}
HarmonyOS
2024-06-05 21:37:51
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
richard_li_li

将自定义类webviewBridge中的invoke方法改成箭头函数即可,示例代码:

export default class WebViewBridge { 
  webViewController: web_webview.WebviewController; 
 
  // 是否已经执行完了onFirstScript方法,默认未执行 
 
  constructor(webviewController: web_webview.WebviewController) { 
    this.webViewController = webviewController; 
  } 
 
  public invoke = () => { 
    console.log('-----', !this) 
    this.webViewController.runJavaScript(""); 
  } 
}
分享
微博
QQ
微信
回复
2024-06-06 22:01:01
相关问题
如何访问自定义文件?
351浏览 • 1回复 待解决
Native与TS互传自定义obj class
499浏览 • 1回复 待解决
json字符串与自定义class结构转换
654浏览 • 1回复 待解决
自定义弹窗自定义转场动画
436浏览 • 1回复 待解决
自定义组件如何添加图片?
1219浏览 • 1回复 待解决
鸿蒙如何自定义字体文件
17920浏览 • 1回复 待解决
NAPI定义并注册Class
345浏览 • 1回复 待解决
如何理解自定义弹窗gridCount参数
907浏览 • 1回复 待解决
注册自定义字体在 webview 无效
865浏览 • 1回复 待解决
如何在自定义弹窗再次弹窗
1018浏览 • 1回复 待解决
自定义弹窗变量如何传递给页面
1078浏览 • 1回复 待解决
IDE无法识别在自定义方法检测
578浏览 • 1回复 待解决
如何在js文件引入自定义js文件
6256浏览 • 1回复 待解决