色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙實戰開發:【瀏覽器制作】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-19 17:47 ? 次閱讀

瀏覽器

介紹

本示例使用[@ohos.systemparameter]接口和[Web組件]展示了一個瀏覽器的基本功能,展示網頁,根據頁面歷史棧前進回退等。

效果預覽

image.png

使用說明:

  1. 連接Wifi,啟動應用,展示默認頁面內容;
  2. 點擊默認頁面的圖標跳轉到對應網頁,或者在輸入框輸入網址,點擊右側跳轉按鈕跳轉到對應網頁;
  3. 點擊輸入框左側向右向左按鈕進行頁面的前進后退;
  4. 點擊主頁圖標回到主頁,點擊加號按鈕新建一個頁面。

工程目錄

entry/src/main/ets/
|---Application
|   |---AbilityStage.ets                        // 入口
|---pages
|   |---Index.ets                               // 首頁
|---common
|   |---PhoneLayout.ets                         // 窗口管理工具
|   |---TitleBar.ets                            // 導航欄
|---model
|   |---Logger.ts                               // 日志工具
|   |---Browser.ets                             // 瀏覽器實例

具體實現

  • Web展示與歷史棧操作功能在Browser中,源碼參考[Browser.ets]
/*

 * Copyright (c) 2022 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

import Logger from './Logger'

import prompt from '@ohos.prompt';



export class WebObject {

  controller: WebController;

  isRegistered: boolean;

  constructor(controller: WebController, isRegistered: boolean) {

    this.controller = controller

    this.isRegistered = isRegistered

  }

}



@Observed

class WebKey {

  key: number;

  timestamp: number;



  constructor(key: number, timestamp: number) {

    this.key = key

    this.timestamp = timestamp

  }

}



export enum LoadingStatus {

  LOADING,

  END

}



const TAG: string = '[browser]'



export class Browser {

  inputValue: string = ""

  tabArrayIndex: number = 0

  progress: number = 0

  hideProgress: boolean = true

  loadingStatus: LoadingStatus = LoadingStatus.END



  webArray: Array< WebKey > = [new WebKey(0, new Date().getTime())]

  tabsController: TabsController = new TabsController()

  webControllerArray: Array< WebObject > = [new WebObject(new WebController(), false)]



  deleteTab(index: number) {

    Logger.info(TAG, `delete before tab index= ${index} controller length ${this.webControllerArray.length} tabArrayIndex= ${this.tabArrayIndex}`)

    this.webArray.splice(index, 1)

    this.webControllerArray.splice(index, 1)

    if (this.tabArrayIndex > index || this.tabArrayIndex === this.webArray.length) {

      this.tabArrayIndex -= 1

    }

    for (let i = index;i < this.webArray.length; ++i) {

      this.webArray[i].key -= 1

    }

    for (let i = 0;i < this.webArray.length; ++i) {

      Logger.info(TAG, `key ${this.webArray[i].key}, time=${this.webArray[i].timestamp}`)

    }

    Logger.info(`delete after tab index=${index}, controller length=${this.webControllerArray.length}, tabArrayIndex=${this.tabArrayIndex}`)

    this.tabsController.changeIndex(this.tabArrayIndex)

  }



  getWebArray() {

    return this.webArray

  }



  addTab() {

    if (this.webArray.length > 10) {

      prompt.showToast({

        message: '頁簽數量已滿'

      })

      return;

    }

    let webController: WebController = new WebController();

    let object = new WebObject(webController, false)

    this.webControllerArray.push(object)

    this.webArray.push(new WebKey(this.webArray.length, new Date().getTime()))

    this.tabArrayIndex = this.webArray.length - 1

    Logger.info(TAG, `add tab index= ${this.tabArrayIndex}`)

    setTimeout(() = > {

      this.tabsController.changeIndex(this.tabArrayIndex)

    }, 50)

  }



  setTabArrayIndex(tabArrayIndex: number) {

    this.tabArrayIndex = tabArrayIndex

  }



  getTabArrayIndex() {

    return this.tabArrayIndex

  }



  setInputVal(inputValue: string) {

    this.inputValue = inputValue

  }



  getInputVal() {

    return this.inputValue

  }



  loadUrl(addr: string) {

    addr = "https://" + addr;

    this.webControllerArray[this.tabArrayIndex].controller.loadUrl({ url: addr })

  }



  Back() {

    if (this.webControllerArray[this.tabArrayIndex].controller.accessBackward()) {

      this.webControllerArray[this.tabArrayIndex].controller.backward()

    }

  }



  Forward() {

    if (this.webControllerArray[this.tabArrayIndex].controller.accessForward()) {

      this.webControllerArray[this.tabArrayIndex].controller.forward()

    }

  }



  Refresh() {

    this.webControllerArray[this.tabArrayIndex].controller.refresh()

  }

}
-   加載網頁及刷新:使用WebController提供的loadUrl可以加載目標網址內容,使用refresh方法刷新頁面;
-   頁面前進后退功能:頁面在前進或者后退前使用accessForward/accessBackward查詢是否有歷史記錄,然后調用forward/backward進行前進/后退操作。

依賴

不涉及。

約束與限制

  1. 本示例僅支持標準系統上運行;
  2. 本示例需外接鼠標進行驗證;
  3. 本示例已適配API version 9版本SDK,版本號:3.2.11.9。
  4. 本示例不支持點擊tab頁簽,切換網頁并刷新頁面;
  5. 本示例涉及使用系統接口:[@ohos.systemparameter],需要手動替換Full SDK才能編譯通過。
  6. 本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400, built on April 7, 2023)及以上版本才可編譯運行。

下載

如需單獨下載本工程,執行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Web/Browser/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 瀏覽器
    +關注

    關注

    1

    文章

    1022

    瀏覽量

    35330
  • 鴻蒙
    +關注

    關注

    57

    文章

    2339

    瀏覽量

    42805
收藏 人收藏

    評論

    相關推薦

    OpenAI醞釀創新:計劃開發集成聊天機器人的瀏覽器

    近日,人工智能領域的佼佼者OpenAI正醞釀著一項可能改變瀏覽器行業格局的重大創新——開發一款能夠與其聊天機器人無縫結合的網絡瀏覽器。 據知情人士透露,OpenAI已與多家知名網站和應用程序
    的頭像 發表于 11-22 11:06 ?406次閱讀

    AWTK 最新動態:支持瀏覽器控件

    導讀AWTK瀏覽器控件,基于webview項目實現,將瀏覽器嵌入到AWTK應用程序中,讓開發者可以方便的集成在線幫助和調用地圖等功能。awtk-widget-web-view是基于webview實現的AWTK
    的頭像 發表于 11-20 01:05 ?189次閱讀
    AWTK 最新動態:支持<b class='flag-5'>瀏覽器</b>控件

    寫一個Chrome瀏覽器插件

    瀏覽器插件有哪些種類 ?以chromium為內核的瀏覽器插件如Chrome ??firefox瀏覽器插件 ???safari瀏覽器插件 本文只介紹Chrome插件的原生
    的頭像 發表于 11-18 17:12 ?293次閱讀
    寫一個Chrome<b class='flag-5'>瀏覽器</b>插件

    鴻蒙Flutter實戰:07混合開發

    # 鴻蒙Flutter實戰:混合開發 鴻蒙Flutter混合開發主要有兩種形式。 ## 1.基于har 將flutter module
    發表于 10-23 16:00

    跨域問題是由瀏覽器的同源策略造成的

    瀏覽器
    jf_62215197
    發布于 :2024年08月27日 07:51:42

    不只是前端,后端、產品和測試也需要了解的瀏覽器知識(二)

    繼上篇《 不只是前端,后端、產品和測試也需要了解的瀏覽器知識(一)》介紹了瀏覽器的基本情況、發展歷史以及市場占有率。 本篇文章將介紹瀏覽器基本原理。 在掌握基本原理后,通過技術深入,在研發
    的頭像 發表于 08-12 14:32 ?333次閱讀
    不只是前端,后端、產品和測試也需要了解的<b class='flag-5'>瀏覽器</b>知識(二)

    不只是前端,后端、產品和測試也需要了解的瀏覽器知識

    一、我們為什么要了解瀏覽器? 1. 對于前端開發者 1.瀏覽器是用戶體驗的第一線。我們需要了解瀏覽器的工作原理,才能有效地設計和實現用戶界面,確保良好的用戶體驗。 2.好的產品需要考慮
    的頭像 發表于 07-01 18:03 ?462次閱讀
    不只是前端,后端、產品和測試也需要了解的<b class='flag-5'>瀏覽器</b>知識

    Opera瀏覽器引領潮流,全球首接端側AI大模型

    昆侖萬維旗下海外平臺Opera宣布,其旗艦瀏覽器Opera One和游戲瀏覽器Opera GX將正式接入端側AI大模型,成為全球首個實現這一突破的主流瀏覽器
    的頭像 發表于 06-03 09:18 ?734次閱讀

    Edge瀏覽器關閉Microsoft Rewards擴展原因揭曉

    據報道,近期德國等地的Microsoft Edge瀏覽器用戶發現,安裝或啟動Microsoft Rewards擴展后,會出現“右上角擴展被Edge瀏覽器禁用以保障您的瀏覽器安全”的提醒窗口。
    的頭像 發表于 04-10 09:55 ?802次閱讀

    Mozilla Firefox瀏覽器推出Text Fragments功能,提升用戶體驗

    早在2020年,谷歌即在Chrome瀏覽器中推出了“Scroll to Text Fragments”功能,而Edge、Opera、Brave、Vivaldi以及蘋果Safari等基于Chromium的瀏覽器也已支持這一便捷特性。
    的頭像 發表于 04-08 10:21 ?616次閱讀

    鴻蒙開發實戰:網絡請求庫【axios】

    [Axios]?,是一個基于 promise 的網絡請求庫,可以運行 node.js 和瀏覽器中。本庫基于[Axios]原庫v1.3.4版本進行適配,使其可以運行在 OpenHarmony,并沿用其現有用法和特性。
    的頭像 發表于 03-25 16:47 ?3862次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b>:網絡請求庫【axios】

    Windows 11預覽版安裝受阻,微軟提示更新設備或瀏覽器

    該提示翻譯如下:由于安全性考慮,您的設備或瀏覽器未能順利連接至認證服務。若您確非惡意行為者,請嘗試更新相關設備或瀏覽器,以獲取完整使用體驗。
    的頭像 發表于 03-05 14:29 ?1028次閱讀

    鴻蒙實戰項目開發:【短信服務】

    、OpenHarmony 多媒體技術、Napi組件、OpenHarmony內核、Harmony南向開發鴻蒙項目實戰等等)鴻蒙(Harmony NEXT) 技術知識點 如果你是一名An
    發表于 03-03 21:29

    昆侖萬維旗下Opera將推出全球首款非WebKit內核的iOS瀏覽器

    近日,昆侖萬維旗下的國際知名瀏覽器品牌Opera宣布,將針對歐洲的iPhone和iPad用戶推出一款全新的AI瀏覽器——Opera One。這款瀏覽器最大的亮點在于,它基于Opera自研的引擎,而非通常的WebKit內核,這在全
    的頭像 發表于 02-06 16:40 ?5728次閱讀

    鴻蒙 HarmonyOS】鴻蒙手機模擬 ( 鴻蒙遠程模擬 | 鴻蒙遠程模擬運行手機應用 )

    一、鴻蒙遠程模擬 選擇 菜單欄 / Tools / HVD Manager , 首次點擊 , 會提示下載模擬相關資源 , 下載完成后可以通過瀏覽器連接遠程模擬
    的頭像 發表于 01-26 15:02 ?2485次閱讀
    【<b class='flag-5'>鴻蒙</b> HarmonyOS】<b class='flag-5'>鴻蒙</b>手機模擬<b class='flag-5'>器</b> ( <b class='flag-5'>鴻蒙</b>遠程模擬<b class='flag-5'>器</b> | <b class='flag-5'>鴻蒙</b>遠程模擬<b class='flag-5'>器</b>運行手機應用 )
    主站蜘蛛池模板: 中文字幕午夜乱理片| 扒开美女嫩bbb| 黄页网站18以下勿看免费| 日本免费无码A专区在线观看| 亚洲欧洲免费三级网站| 短篇合集纯肉高H深陷骚 | 98久久无码一区人妻A片蜜| 极品少妇高潮XXXXX| 亚洲国产精品久久又爽黄A片| 高冷师尊被CAO成SAO货| 漂亮美女2018完整版| 992交通广播| 男人和女人一级黄色大片| 3344永久在线观看视频免费| 久久精品熟女亚洲AV国产| 伊人大香线蕉精品在线播放| 国产亚洲精品久久久久久久软件| 十分钟视频影院免费| 鬼灭之刃花街篇免费樱花动漫| 日本一本在线播放| 高h全肉图| 亚洲成人一区| 娇喘嗯嗯 轻点啊视频福利| 亚洲欧美一区二区三区九九九 | Zoofilivideo人馿交| 青青草国产自偷拍| 大咪咪dvd| 特级毛片内射WWW无码| 国内久经典AAAAA片| 亚洲伊人精品综合在合线| 久久热这里面只有精品| 91国内精品久久久久免费影院| 欧美成人一区二免费视频| 俄罗斯12x13x处| 亚洲精品国产A久久久久久| 国产主播福利一区二区| 伊人成综合网伊人222| 青青草国产精品| 国产一区二区不卡老阿姨| 这里只有精品在线视频| 人妻换人妻AA视频|