1# 应用侧调用前端页面函数 2<!--Kit: ArkWeb--> 3<!--Subsystem: Web--> 4<!--Owner: @aohui--> 5<!--Designer: @yaomingliu--> 6<!--Tester: @ghiker--> 7<!--Adviser: @HelloCrease--> 8 9应用侧可以通过[runJavaScript()](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#runjavascript)和[runJavaScriptExt()](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#runjavascriptext10)方法调用前端页面的JavaScript相关函数。 10 11[runJavaScript()](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#runjavascript)和[runJavaScriptExt()](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#runjavascriptext10)在参数类型上有以下差异:[runJavaScriptExt()](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#runjavascriptext10)支持string和ArrayBuffer类型参数,而[runJavaScript()](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#runjavascript)仅支持string类型参数。 12 13在下面的示例中,点击应用侧的“runJavaScript”按钮时,触发前端页面的htmlTest()方法。 14 15- 前端页面代码。 16 17 ```html 18 <!-- index.html --> 19 <!DOCTYPE html> 20 <html> 21 <head> 22 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 23 </head> 24 <body> 25 <button type="button" onclick="callArkTS()">Click Me!</button> 26 <h1 id="text">这是一个测试信息,默认字体为黑色,调用runJavaScript方法后字体为黄色、调用runJavaScriptParam方法后字体为绿色、调用runJavaScriptCodePassed方法后字体为红色</h1> 27 <script> 28 // 有参函数。 29 var param = "param: JavaScript Hello World!"; 30 function htmlTestParam(param) { 31 document.getElementById('text').style.color = 'green'; 32 console.log(param); 33 } 34 // 无参函数。 35 function htmlTest() { 36 document.getElementById('text').style.color = 'yellow'; 37 } 38 // 点击“Click Me!”按钮,触发前端页面callArkTS()函数执行JavaScript传递的代码。 39 function callArkTS() { 40 changeColor(); 41 } 42 </script> 43 </body> 44 </html> 45 ``` 46 47 48- 应用侧代码。 49 50 ```ts 51 // xxx.ets 52 import { webview } from '@kit.ArkWeb'; 53 54 @Entry 55 @Component 56 struct WebComponent { 57 webviewController: webview.WebviewController = new webview.WebviewController(); 58 59 aboutToAppear() { 60 // 配置Web开启调试模式 61 webview.WebviewController.setWebDebuggingAccess(true); 62 } 63 64 build() { 65 Column() { 66 Button('runJavaScriptParam') 67 .onClick(() => { 68 // 调用前端页面有参函数。 69 this.webviewController.runJavaScript('htmlTestParam(param)'); 70 }) 71 Button('runJavaScript') 72 .onClick(() => { 73 // 调用前端页面无参函数。 74 this.webviewController.runJavaScript('htmlTest()'); 75 }) 76 Button('runJavaScriptCodePassed') 77 .onClick(() => { 78 // 传递runJavaScript侧代码方法。 79 this.webviewController.runJavaScript(`function changeColor(){document.getElementById('text').style.color = 'red'}`); 80 }) 81 Web({ src: $rawfile('index.html'), controller: this.webviewController }) 82 } 83 } 84 } 85 ``` 86 87## 相关实例 88 89针对Web组件开发,有以下相关实例可供参考: 90 91- [JS注入与执行(ArkTS)(Full SDK)(API9)](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Web/RunJsInWeb)