HarmonyOS 管理頁面跳轉及瀏覽記錄導航
歷史記錄導航
使用者在前端頁面點選網頁中的連結時,Web元件預設會自動開啟並載入目標網址。當前端頁面替換為新的載入連結時,會自動記錄已經訪問的網頁地址。可以透過 forward() 和 backward() 介面向前/向後瀏覽上一個/下一個歷史記錄。
在下面的示例中,點選應用的按鈕來觸發前端頁面的後退操作。
// 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
:
'
,
controller
:
this
.
webviewController
})
}
}
}
如果存在歷史記錄, accessBackward() 介面會返回true。同樣,您可以使用 accessForward() 介面檢查是否存在前進的歷史記錄。如果您不執行檢查,那麼當使用者瀏覽到歷史記錄的末尾時,呼叫 forward() 和 backward() 介面時將不執行任何操作。
頁面跳轉
當點選網頁中的連結需要跳轉到應用內其他頁面時,可以透過使用Web元件的 onUrlLoadIntercept() 介面來實現。
在下面的示例中,應用首頁Index.ets載入前端頁面route.html,在前端route.html頁面點選超連結,可跳轉到應用的ProfilePage.ets頁面。
● 應用首頁index.ets頁面程式碼。
// 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
)
{
// 跳轉其他介面
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 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;
// 判斷連結是否為撥號連結
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>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009402/viewspace-2984579/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ArkWeb頁面載入與瀏覽記錄導航 - 基礎操作Web
- 瀏覽器跳轉新頁面 window.ope瀏覽器
- HarmonyOS Next 入門實戰 - 導航框架:頁面路由、元件導航(Navigation)框架路由元件Navigation
- ArkWeb頁面跳轉與跨應用導航 - 高階應用Web
- win10怎樣禁止IE頁面自動跳轉到EDGE瀏覽器 win10禁止IE頁面自動跳轉到EDGE瀏覽器的教程Win10瀏覽器
- Flutter頁面保活及保持頁面跳轉位置Flutter
- Vue 小案例 導航路由跳轉頁面Vue路由
- Android Jetpack - 使用 Navigation 管理頁面跳轉AndroidJetpackNavigation
- Google瀏覽器主頁被搜狗導航劫持解決方法Go瀏覽器
- Flutter頁面跳轉Flutter
- vue頁面跳轉Vue
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- safair瀏覽器 在回撥中跳轉 window.open 打不開頁面 但是有判斷,跳轉不了AI瀏覽器
- 導航的瀏覽器相容問題瀏覽器
- 製作一個瀏覽器導航瀏覽器
- router跳轉page頁面
- JavaScript 頁面跳轉效果JavaScript
- Flutter:如何跳轉頁面?Flutter
- 【HarmonyOS NEXT】API 11 跳轉系統設定定位服務頁面示例API
- Flutter小白教程系列(五) --- 頁面路由導航及傳參Flutter路由
- 微信瀏覽器字型縮放導致頁面變形瀏覽器
- JavaScript頁面跳轉程式碼JavaScript
- 微信跳轉瀏覽器提示,微信瀏覽器中直接跳轉手機預設瀏覽器是怎麼實現的瀏覽器
- 2024-05-03 uni跳轉頁面a成功後會立即再跳轉到頁面b,導致無法展現頁面a ==》頁面a業務邏輯沒捋清楚
- 微信跳轉瀏覽器如何解決!瀏覽器
- 瀏覽器頁面渲染機制瀏覽器
- html頁面轉PDF、圖片操作記錄HTML
- 讀書筆記【JS 權威指南】14.2 瀏覽器定位和導航筆記JS瀏覽器
- 404頁面自動跳轉到首頁
- php怎麼直接跳轉頁面PHP
- 頁面跳轉的幾種方法
- PHP中實現頁面跳轉PHP
- VS Code在瀏覽器預覽HTML頁面瀏覽器HTML
- 重定向到登入頁面後跳轉原頁面
- nginx 設定 404 500 頁面跳轉到指定頁面Nginx
- 微信跳轉外部瀏覽器有哪些功效?瀏覽器
- UWP 開發初階 Chapter 5 - 實現頁面導航,和頁面內部分割槽域導航APT