W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使用者在前端頁(yè)面點(diǎn)擊網(wǎng)頁(yè)中的鏈接時(shí),Web組件默認(rèn)會(huì)自動(dòng)打開(kāi)并加載目標(biāo)網(wǎng)址。當(dāng)前端頁(yè)面替換為新的加載鏈接時(shí),會(huì)自動(dòng)記錄已經(jīng)訪問(wèn)的網(wǎng)頁(yè)地址??梢酝ㄟ^(guò)forward()和backward()接口向前/向后瀏覽上一個(gè)/下一個(gè)歷史記錄。
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- @Entry
- @Component
- struct WebComponent {
- webviewController: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Button('loadData')
- .onClick(() => {
- if (this.webviewController.accessBackward()) {
- this.webviewController.backward();
- return true;
- }
- })
- Web({ src: 'https://www.example.com/cn/', controller: this.webviewController})
- }
- }
- }
如果存在歷史記錄,accessBackward()接口會(huì)返回true。同樣,您可以使用accessForward()接口檢查是否存在前進(jìn)的歷史記錄。如果您不執(zhí)行檢查,那么當(dāng)用戶瀏覽到歷史記錄的末尾時(shí),調(diào)用forward()和backward()接口時(shí)將不執(zhí)行任何操作。
當(dāng)點(diǎn)擊網(wǎng)頁(yè)中的鏈接需要跳轉(zhuǎn)到應(yīng)用內(nèi)其他頁(yè)面時(shí),可以通過(guò)使用Web組件的onUrlLoadIntercept()接口來(lái)實(shí)現(xiàn)。
在下面的示例中,應(yīng)用首頁(yè)Index.ets加載前端頁(yè)面route.html,在前端route.html頁(yè)面點(diǎn)擊超鏈接,可跳轉(zhuǎn)到應(yīng)用的ProfilePage.ets頁(yè)面。
- // index.ets
- import web_webview from '@ohos.web.webview';
- import router from '@ohos.router';
- @Entry
- @Component
- struct WebComponent {
- webviewController: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Web({ src: $rawfile('route.html'), controller: this.webviewController })
- .onUrlLoadIntercept((event) => {
- let url: string = event.data as string;
- if (url.indexOf('native://') === 0) {
- // 跳轉(zhuǎn)其他界面
- router.pushUrl({ url:url.substring(9) })
- return true;
- }
- return false;
- })
- }
- }
- }
- <!-- route.html -->
- <!DOCTYPE html>
- <html>
- <body>
- <div>
- <a href="native://pages/ProfilePage">個(gè)人中心</a>
- </div>
- </body>
- </html>
- @Entry
- @Component
- struct ProfilePage {
- @State message: string = 'Hello World';
- build() {
- Column() {
- Text(this.message)
- .fontSize(20)
- }
- }
- }
Web組件可以實(shí)現(xiàn)點(diǎn)擊前端頁(yè)面超鏈接跳轉(zhuǎn)到其他應(yīng)用。
在下面的示例中,點(diǎn)擊call.html前端頁(yè)面中的超連接,跳轉(zhuǎn)到電話應(yīng)用的撥號(hào)界面。
- // xxx.ets
- import web_webview from '@ohos.web.webview';
- import call from '@ohos.telephony.call';
- @Entry
- @Component
- struct WebComponent {
- webviewController: web_webview.WebviewController = new web_webview.WebviewController();
- build() {
- Column() {
- Web({ src: $rawfile('xxx.html'), controller: this.webviewController})
- .onUrlLoadIntercept((event) => {
- let url: string = event.data as string;
- // 判斷鏈接是否為撥號(hào)鏈接
- if (url.indexOf('tel://') === 0) {
- // 跳轉(zhuǎn)撥號(hào)界面
- call.makeCall(url.substring(6), (err) => {
- if (!err) {
- console.info('make call succeeded.');
- } else {
- console.info('make call fail, err is:' + JSON.stringify(err));
- }
- });
- return true;
- }
- return false;
- })
- }
- }
- }
- <!-- call.html -->
- <!DOCTYPE html>
- <html>
- <body>
- <div>
- <a href="tel://xxx xxxx xxx">撥打電話</a>
- </div>
- </body>
- </html>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: