const spanElement = document.getElementById('mySpan');
const spanElements = document.getElementsByTagName('span');
import { webview } from '@kit.ArkWeb'; @Entry @Component struct Index { private controller: webview.WebviewController = new webview.WebviewController(); private context: Context = this.getUIContext().getHostContext() as Context; initJavaScrip() { // 注入本地的js脚本 this.context.resourceManager.getRawFileContent('index.js') .then((value: ESObject) => { // 获取js脚本的ArrayBuffer数据 let rawfile: ArrayBuffer = value.buffer; console.info('开始注入脚本'); this.controller.runJavaScriptExt(rawfile).then(() => { console.info('开始注入脚本成功'); }).catch(() => { console.info('开始注入脚本失败'); }); }); } build() { RelativeContainer() { Web({ src: $rawfile('span.html'), controller: this.controller }) .onPageEnd(() => { setTimeout(() => { this.initJavaScrip(); }, 3000); }) .fileAccess(false) .geolocationAccess(false) .domStorageAccess(true) } .height('100%') .width('100%') } }
let spanLabels = document.getElementById('mySpan'); console.info(`mySpan:${spanLabels.innerHTML}`) spanLabels.innerHTML = "修改后的文本"
<!DOCTYPE html> <html> <body> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <h1 id="example">示例文本</h1> <span id="mySpan">这是默认文本</span> </body> </html>
Q:runJavaScript()和runJavaScriptExt()有什么区别?
A:runJavaScript()和runJavaScriptExt()的区别主要体现在参数和返回值的类型上。runJavaScript()仅支持string类型参数,而runJavaScriptExt()支持string和ArrayBuffer类型参数;runJavaScript()返回脚本执行的结果只能是string,而runJavaScriptExt()可以返回的类型支持JsMessageType,包括字符串、数组类型等。