react實現把pc網站快捷添加到桌面快捷方式

文章目錄

  • 1. 需求
  • 2. 實現效果
  • 3. 核心邏輯
  • 4. 完整react代碼

1. 需求

這種需求其實在國外一些游戲網站和推廣網站中經常會用到,目的是為了讓客戶 快捷方便的保存網站到桌面 ,網站主動盡量避免下次找不到網站地址了,當然精確的客戶自己也可以使用瀏覽器的收藏功能去收藏

2. 實現效果

  1. 下面 gif 效果我們可以看到默認進去會彈窗一個提示,提示用戶進行網站安裝到桌面的提示效果
    請添加圖片描述

  2. 當我們點擊 安裝 后,會馬上單獨開一個窗口(這個窗口和普通的瀏覽器彈窗有點不一樣,類似于一個Electron),并且會保存到桌面,展示快捷方式
    在這里插入圖片描述

  3. 測試:打開電腦 應用 -> 安裝的應用,也可以看到,這個網站地址也被安裝到應用上了
    在這里插入圖片描述

3. 核心邏輯

window.deferredPrompt?.prompt

const installApp = () => {clearTimeout(timeOut);window.deferredPrompt?.prompt().then(() => {showInstallSet(false);});showInstallSet(false);
};

4. 完整react代碼

  1. 新建一個 GuideDown 組件,實現代碼如下,代碼內容其實很簡單,這邊不做過多詳解
import React, {useEffect, useState} from 'react';
import {observer} from 'mobx-react-lite';
import {CloseOutline} from 'antd-mobile-icons';
import {Divider} from 'antd';
import {Button} from 'antd-mobile';
import {useTranslation} from 'react-i18next';let timeOut = null;
const GuideDown = () => {const {t} = useTranslation();const [showInstall, showInstallSet] = useState(false); // 彈窗展示const [linkTime, lineTimeSet] = useState(5); // 倒計時獲取能否安裝狀態,如果這個時間內一直沒有,就不彈出useEffect(() => {try {if (window?.deferredPrompt) {if (sessionStorage.getItem('closeAppInstall') !== '1') showInstallSet(true);}} catch (error) {}timeOut = setTimeout(() => {lineTimeSet((e) => e - 1);clearTimeout(timeOut);}, 3000);}, [linkTime]);const installApp = () => {clearTimeout(timeOut);window.deferredPrompt?.prompt().then(() => {showInstallSet(false);});showInstallSet(false);};return showInstall ? (<div className='fixed top-4 right-4 w-75 bg-b2 z-[200] rounded-lg shadow-lg'><div className='flex justify-between items-center p-3'><span className='text-[16px] theme'>如何快速訪問網站</span>{' '}<CloseOutlineclassName='cursor-pointer'onClick={() => {showInstallSet(false);sessionStorage.setItem('closeAppInstall', '1');}}/></div><div className='pt-4 grid grid-cols-2 text-[12px]'><div className='px-3 flex flex-col justify-between relative after:content-[""] after:bg-white/5 after:w-[1px] after:h-20 after:absolute after:right-0 after:top-1/2 after:-translate-y-1/2'><div className='leading-4'>1、在瀏覽器搜索欄點擊該圖標</div><div className='mt-2'><img src={require('@/branch/assets/images/download/guide1.png')} className='max-w-full' /></div></div><div className='px-3 flex flex-col justify-between'><div className='leading-4'>2、在彈出框內點擊安裝</div><div className='mt-2'><img src={require('@/branch/assets/images/download/guide2.png')} className='max-w-full' /></div></div></div><div className='px-3 text-[12px]'>在桌面找到快捷方式即可直接打開網站</div><Divider className='mt-2 mb-0 h-[1px bg-white/5' /><div className='flex justify-end items-center h-11'><ButtonclassName='bg-b1 text-w2 px-3 border-none rounded-full min-w-[70px] flex justify-center items-center !h-7 mr-3'onClick={() => installApp()}>{t('anzhuang')}</Button><ButtonclassName='border border-solid border-deep text-[#AFCAFA] px-3 rounded-full min-w-[70px] flex justify-center items-center !h-7 mr-3'onClick={() => {showInstallSet(false);sessionStorage.setItem('closeAppInstall', '1');}}>{t('btn_cancel')}</Button></div></div>) : (<></>);
};export default observer(GuideDown);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14676.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14676.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14676.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 字符串中運算符號可運行

使用eval() re {\n "path": "/sms/sendMsg",\n "data": {\n "mobile": "12345678901",\n "signCode": "短信簽名",\n "templateCode": "SMS_yyyy…

Oracle遞歸查詢筆記

目錄 一、創建表結構和插入數據 二、查詢所有子節點 三、查詢所有父節點 四、查詢指定節點的根節點 五、查詢指定節點的遞歸路徑 六、遞歸子類 七、遞歸父類 一、創建表結構和插入數據 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…

解析Oracle文件頭內容

保存在Oracle數據文件頭中的信息很豐富&#xff0c;通常只要查詢DATAFILE_HEADER視圖就可以獲得數據文件頭中的信息。但其在數據文件頭中的具體位置&#xff0c;Oracle一直未公開過。所幸的是DBA們對數據文件頭的研究孜孜不倦&#xff0c;其研究成果在網上也是隨處可見。雖然這…

[前端|vue] 驗證器validator使用筆記 (筆記)

文檔 validator.js文檔地址 規則編寫示例 element-plus 使用示例 const captchaLoginRules {phoneNumber: [{ required: true, message: 手機號不能為空, trigger: blur },{validator: (_rule: any, value: string, _callback: any): boolean > {return isMobilePhone(…

vue-quill-editor 富文本編輯器使用出現的樣式問題

使用富文本類型&#xff1a; vue-quill-editor 注意&#xff1a; 富文本導出 html 我們使用的時候&#xff0c; 樣式凸顯不出來 DOM 結構 <p><sub class"ql-size-large">測試內容</sub><sup class"ql-size-large">222222</su…

6步:用NGINX部署ASP.NET Core,輕松上云

1. 準備工作在開始部署之前&#xff0c;確保你已經完成了以下準備工作&#xff1a;- 安裝.NET Core&#xff1a;確保你的Linux系統上安裝了.NET Core運行時。你可以從.NET官網下載。- 安裝NGINX&#xff1a;通過你的Linux發行版的包管理器安裝NGINX。例如&#xff0c;在Ubuntu上…

GPT提示詞技巧,使用教程,國內版官網直達,非套殼

GPT提示詞技巧&#xff0c;使用教程&#xff0c;國內版官網直達&#xff0c;非套殼 主站點&#xff1a;https://chatgpt-plus.top&#xff08;江蘇福建地區打不開&#xff0c;需要魔法&#xff09; 店鋪地址&#xff1a;https://buy.chatgpt-plus.top/ 選擇plus賬號進入&…

鴻蒙開發ArkUI-X基礎知識:【ArkUI代碼工程及構建介紹】

代碼工程及構建介紹 背景 ArkUI作為OpenHarmony的默認開發框架&#xff0c;在本項目&#xff08;ArkUI-X&#xff09;中需要做到一套代碼同時支持多平臺構建&#xff0c;所以會采取共倉開發的方式&#xff0c;部分倉直接指向OpenHarmony相關開源倉。 代碼結構及倉庫結構 代…

多模態模型(MLLM)論文串燒

近期看了一些多模態方向的工作&#xff0c;包括圖像、文本多模態&#xff0c;圖像、視頻、語音、文本多模態&#xff0c;做個總結。 Yi Qwen-VL LLaVA MobileVLM LanguageBind Video-LLaVA VAST

【機器學習300問】94、什么是多任務學習?

一、多任務學習的定義 多任務學習&#xff08;Multi-Task Learning, MTL&#xff09;是一種機器學習范式&#xff0c;它允許一個模型同時學習執行多個相關但不完全相同的任務。這種方法的核心是&#xff1a;通過共享表示或權重&#xff0c;不同的任務可以在學習過程中相互促進&…

淺談微服務的自動化部署

一、常用部署工具 jenkins,docker生態是比較常用的工具&#xff0c;本文也主要是聊這幾個。其他如Kubernetes (K8s)&#xff0c;Ansible&#xff0c;GitLab CI/CD等工具本文只是暫時提一下&#xff0c;不展開討論。 二、比較jenkins和docker生態 1、jenkins 優點 jenkins功…

Rust使用rust_xlsxwriter庫把Vec數據寫入Excel

一、Rust使用rust_xlsxwriter庫把一維Vec數據寫入Excel 在Rust中&#xff0c;使用rust_xlsxwriter庫將一維Vec數據寫入Excel文件是一個相對簡單的過程。首先&#xff0c;你需要確保你的Cargo.toml文件中已經添加了rust_xlsxwriter依賴。以下是如何添加依賴的示例&#xff1a; …

KMP題解代碼(含講解)

目錄 注意: next數組的變化規律&#xff1a; 初始化&#xff1a; 求next數組部分&#xff1a; KMP部分&#xff1a; AC代碼&#xff1a; 題目鏈接&#xff1a;【模板】KMP - 洛谷 注意: 1、next數組是針對子串的&#xff0c;并未涉及母串&#xff0c;因此求next數組時…

Python中文件操作和異常處理

文章目錄 一、文件操作1.概念2.文件3.二進制 二、基本文件操作三、亂碼產生四、with open() as f五、代碼實現文件復制粘貼六、try ... except ...七、代碼比較 一、文件操作 1.概念 幫助我們把爬蟲抓下來的數據&#xff0c;進行保存。 2.文件 在計算機中&#xff0c;沒有p…

Linux:linux基礎

Linux 一套免費使用和自由傳播的操作系統 linux特點 免費,開源,多用戶(同時允許多用戶操作同一個Linux系統),多任務(同時允許多個任務執行) linux版本 分為內核版和發行版 內核版 由linus torvalds及其團隊進行開發和維護 免費,開源 負責控制硬件 發行版 基于linux內…

Luat學習

萬物互聯的興起 人與人之間的連接已經變得越來越緊密&#xff0c;至少在中國這是一個不爭的事實。 人們的忙碌程度也達到了前所未有的水平&#xff0c;這時候人的通訊能力反而成為了瓶頸&#xff0c;人與外界的信息交換方式無外乎是嘴說、耳朵聽、眼睛看、手指敲、每秒的傳輸速…

根據配置的mode環境顯示不同的index模板

引言&#xff1a;在項目開發中&#xff0c;遇到了開發環境和生產環境使用模板不同的情況&#xff0c;配置如下&#xff1a; 一、vue.config.js const path require(path) function resolve(dir){return path.join(__dirname,dir) } module.exports {chainWebpack: config &g…

力扣226. 翻轉二叉樹(DFS的兩種思路)

Problem: 226. 翻轉二叉樹 文章目錄 題目描述思路復雜度Code 題目描述 思路 涉及二叉樹的遞歸解法時往往需要考慮兩種思路&#xff1a; 1.在遞歸遍歷時執行題目需要的具體要求&#xff1b; 2.將一個大問題分解為多個小子問題 具體到本體&#xff1a; 思路1&#xff1a;遍歷 先…

【源碼分享】簡單的404 HTML頁面示例,該頁面在加載時會等待2秒鐘,然后自動重定向到首頁

展示效果 源碼 html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>404 頁面未找到</title><meta http-equiv"refresh" content"2;url/"> <!-- 設置2秒后跳轉到首…

機器學習云環境測試

等待創建完成后&#xff0c;點擊 PyTorch 打開&#xff0c;創建一個全新的 notebook 在 Cell 中輸入如下代碼&#xff0c;并點擊 Run 完成后點擊 New Cell &#xff0c;在 New Cell 中輸入如下代碼 輸入完成后點擊 Run &#xff0c;運行 New Cell 。&#xff08;每個 Cell 代…