HarmonyOS 鸿蒙Next 使用webview加载url时,如何注入两个javascript对象?
HarmonyOS 鸿蒙Next 使用webview加载url时,如何注入两个javascript对象?
查阅文档时,只看到如下的注入javaScriptProxy对象的方法,我有两个对象需要注入,一个名字是app,一个是AndroidJs。如何实现?
Web({ src: this.url, controller: this.webviewController })
.javaScriptAccess(true)
.fileAccess(true)
.domStorageAccess(true)
.javaScriptProxy({
object: this.mpmJavaScriptProxy,
name: MpmJavaScriptProxy.javaScriptProxyName,
methodList: MpmJavaScriptProxy.methodList,
controller: this.webviewController
})
更多关于HarmonyOS 鸿蒙Next 使用webview加载url时,如何注入两个javascript对象?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next 使用webview加载url时,如何注入两个javascript对象 可以参考下面代码
// xxx.ets
import web_webview from '@ohos.web.webview';
import business_error from '@ohos.base';
class TestObj {
constructor() {
}
test(testStr:string): string {
console.log('Web Component str' + testStr);
return testStr;
}
toString(): void {
console.log('Web Component toString');
}
testNumber(testNum:number): number {
console.log('Web Component number' + testNum);
return testNum;
}
testBool(testBol:boolean): boolean {
console.log('Web Component boolean' + testBol);
return testBol;
}
}
class WebObj {
constructor() {
}
webTest(): string {
console.log('Web test');
return "Web test";
}
webString(): void {
console.log('Web test toString');
}
}
@Entry
@Component
struct Index {
controller: web_webview.WebviewController = new web_webview.WebviewController();
@State testObjtest: TestObj = new TestObj();
@State webTestObj: WebObj = new WebObj();
build() {
Column() {
Button('refresh')
.onClick(() => {
try {
this.controller.refresh();
} catch (error) {
let e: business_error.BusinessError = error as business_error.BusinessError;
console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
}
})
Button('Register JavaScript To Window')
.onClick(() => {
try {
this.controller.registerJavaScriptProxy(this.testObjtest, "objName", ["test", "toString", "testNumber", "testBool"]);
this.controller.registerJavaScriptProxy(this.webTestObj, "objTestName", ["webTest", "webString"]);
} catch (error) {
let e: business_error.BusinessError = error as business_error.BusinessError;
console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);
}
})
Web({ src: $rawfile('index.html'), controller: this.controller })
.javaScriptAccess(true)
}
}
}
更多关于HarmonyOS 鸿蒙Next 使用webview加载url时,如何注入两个javascript对象?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用webview加载URL并注入JavaScript对象,可以通过以下步骤实现:
-
配置Webview: 确保你的webview组件已正确配置,并加载了目标URL。
-
准备JavaScript对象: 在JavaScript中定义两个对象,或者使用JSON字符串表示对象,再通过Java(鸿蒙系统使用ArkUI的ETS或Java UI框架)代码将这些对象传递给webview。
-
注入对象: 利用鸿蒙提供的webview接口,通过
evaluateJavascript
方法将JavaScript对象注入到webview的上下文中。需要注意的是,由于直接传递对象较为复杂,一般选择将对象转换为JSON字符串,然后在webview中解析为对象。
示例代码:
// 假设这是要在webview中使用的JavaScript代码
let obj1 = JSON.parse('{"key1":"value1"}');
let obj2 = JSON.parse('{"key2":"value2"}');
在鸿蒙的Java(ArkUI)代码中:
webview.evaluateJavascript("let obj1 = JSON.parse('{\"key1\":\"value1\"}'); let obj2 = JSON.parse('{\"key2\":\"value2\"}');", null);
以上代码将两个JavaScript对象注入到webview中。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html