曹旭辉 发表于 2024-12-14 21:44:07

鸿蒙NEXT版实战开辟:管理页面跳转及欣赏记载导航

往期鸿蒙全套实战精彩文章必看内容:



[*] 鸿蒙开辟焦点知识点,看这篇文章就够了
[*] 最新版!鸿蒙HarmonyOS Next应用开辟实战学习路线
[*] 鸿蒙HarmonyOS NEXT开辟技能最全学习路线指南
[*] 鸿蒙应用开辟实战项目,看这一篇文章就够了(部分项目附源码)
管理页面跳转及欣赏记载导航

历史记载导航

在前端页面点击网页中的链接时,Web组件默认会自动打开并加载目的网址。当前端页面更换为新的加载链接时,会自动记载已经访问的网页地址。可以通过forward()和backward()接口向前/向后欣赏上一个/下一个历史记载。
页面加载过程中,若涉及网络资源获取,需要配置ohos.permission.INTERNET网络访问权限。
在下面的示例中,点击应用的按钮来触发前端页面的后退操作。
// xxx.ets
import { webview } from '@kit.ArkWeb';

@Entry
@Component
struct WebComponent {
webviewController: webview.WebviewController = new webview.WebviewController();

build() {
    Column() {
      Button('loadData')
      .onClick(() => {
          if (this.webviewController.accessBackward()) {
            this.webviewController.backward();
          }
      })
      Web({ src: 'https://www.example.com/cn/', controller: this.webviewController })
    }
}
} 如果存在历史记载,accessBackward()接口会返回true。同样,您可以使用accessForward()接口检查是否存在前进的历史记载。如果您不实行检查,那么当用户欣赏到历史记载的末尾时,调用forward()和backward()接口时将不实行任何操作。
页面跳转

当点击网页中的链接需要跳转到应用内其他页面时,可以通过使用Web组件的onLoadIntercept()接口来实现。
在下面的示例中,应用首页Index.ets加载前端页面route.html,在前端route.html页面点击超链接,可跳转到应用的ProfilePage.ets页面。


[*] 应用首页Index.ets页面代码。
// index.ets
import { webview } from '@kit.ArkWeb';
import { router } from '@kit.ArkUI';

@Entry
@Component
struct WebComponent {
webviewController: webview.WebviewController = new webview.WebviewController();

build() {
Column() {
// 资源文件route.html存放路径src/main/resources/rawfile
Web({ src: $rawfile('route.html'), controller: this.webviewController })
.onLoadIntercept((event) => {
if (event) {
let url: string = event.data.getRequestUrl();
if (url.indexOf('native://') === 0) {
// 跳转其他界面
router.pushUrl({ url: url.substring(9) });
return true;
}
}
return false;
})
}
}
}
[*] route.html前端页面代码。
<!-- route.html -->
<!DOCTYPE html>
<html>
<body>
<div>
      <a href="native://pages/ProfilePage">个人中心</a>
   </div>
</body>
</html>
[*] 跳转页面ProfilePage.ets代码。
@Entry
@Component
struct ProfilePage {
@State message: string = 'Hello World';

build() {
    Column() {
      Text(this.message)
      .fontSize(20)
    }
}
}
跨应用跳转

Web组件可以实现点击前端页面超链接跳转到其他应用。
在下面的示例中,点击call.html前端页面中的超链接,跳转到电话应用的拨号界面。


[*] 应用侧代码。
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { call } from '@kit.TelephonyKit';

@Entry
@Component
struct WebComponent {
webviewController: webview.WebviewController = new webview.WebviewController();

build() {
    Column() {
      Web({ src: $rawfile('call.html'), controller: this.webviewController })
      .onLoadIntercept((event) => {
          if (event) {
            let url: string = event.data.getRequestUrl();
            // 判断链接是否为拨号链接
            if (url.indexOf('tel://') === 0) {
            // 跳转拨号界面
            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代码。
<!-- call.html -->
<!DOCTYPE html>
<html>
<body>
<div>
    <a href="tel://xxx xxxx xxx">拨打电话</a>
</div>
</body>
</html>
https://i-blog.csdnimg.cn/direct/5be73c96555f4ad39cb84daabe28288e.png​

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 鸿蒙NEXT版实战开辟:管理页面跳转及欣赏记载导航