HarmonyOS鸿蒙Next中runJavaScript未执行成功

HarmonyOS鸿蒙Next中runJavaScript未执行成功 如下一段代码,偶现runJavaScript未执行的情况,概率50%

try {
  log.showError('start runJavaScript.' + JSON.stringify(data));
  controller.runJavaScript(`console.log('hello_word')`)
    .then((result) => {
      log.showError("result:" + result);
    });

  let cmd = (`document.sendDynamicData('${JSON.stringify(data)}')`);
  let script = (`${cmd};console.log('dynamic-data');location.reload();`);
  log.showError('start runJavaScript.' + script);
  controller.runJavaScript(`${script}`)
    .then((result) => {
      log.showError('result: ' + result);
    })
    .catch((error: BusinessError) => {
      log.showError("error: " + error);
    });
  log.showError('end success sent response data to blink.1');
} catch (error) {
  console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
  log.showError('success sent response data to blink.2.' + error);
}

分析思路:

  1. 如果执行成功,try中的start 和 end均会打印,日志中会打印第一个语句中的hello_word,并且then中的result会打印null
  2. 如果没有执行成功,try中的start 和 end会打印,但是看不到runJavaScript中语句的执行结果
2 回复

在HarmonyOS鸿蒙Next中,runJavaScript未执行成功可能有多种原因。首先,确保WebView已正确加载目标网页,并且JavaScript执行环境已准备就绪。检查WebView的初始化配置,确保JavaScriptEnabled属性设置为true

其次,确认runJavaScript方法调用的时机是否正确。如果WebView尚未完成页面加载,JavaScript可能无法执行。可以尝试在WebViewonPageFinished回调中调用runJavaScript方法,以确保页面加载完成后再执行JavaScript代码。

另外,检查runJavaScript方法中传入的JavaScript代码是否正确,避免语法错误或逻辑错误导致执行失败。如果JavaScript代码依赖于某些页面元素,确保这些元素在页面中已存在。

最后,查看系统日志或调试信息,确认是否有相关错误或警告信息。这些信息可能有助于定位问题。如果问题依然存在,可以尝试使用其他方法执行JavaScript代码,或检查鸿蒙Next的文档和API更新,确认是否有已知问题或限制。

更多关于HarmonyOS鸿蒙Next中runJavaScript未执行成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,runJavaScript未执行成功可能由以下原因导致:

  1. 页面未加载完成:确保在页面完全加载后再调用runJavaScript,可在onPageFinished回调中执行。
  2. JavaScript代码错误:检查JavaScript代码是否有语法错误或逻辑问题。
  3. 权限问题:确认应用已获取必要的网络和JavaScript执行权限。
  4. WebView配置:确保WebView已启用JavaScript支持,通过setJavaScriptEnabled(true)设置。
  5. 异步问题:如果JavaScript代码涉及异步操作,确保正确处理回调或使用evaluateJavascript替代。

建议逐步排查以上问题,确保代码和配置正确。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!