無侵入式彈窗體驗_探索 Chrome 的 Close Watcher API

1. 引言

在網頁開發中,彈窗(Popup)是一種常見的交互方式,用于提示用戶進行操作、確認信息或展示關鍵內容。然而,傳統的 JavaScript 彈窗方法如 alert()confirm()prompt() 存在諸多問題,包括阻塞主線程、樣式不可定制等。

為了解決這些問題,Chrome 瀏覽器引入了 Close Watcher API,它允許開發者以更現代、非侵入式的方式管理模態對話框和彈窗行為。本文將深入探討該 API 的原理、使用方式,并通過豐富的代碼示例幫助你快速掌握這一新特性。

1.1 網頁彈窗的發展歷程

早期的 Web 頁面主要依賴瀏覽器內置的彈窗函數來與用戶進行交互:

alert("這是一個警告!");
let isConfirmed = confirm("你確定要繼續嗎?");
let name = prompt("請輸入你的名字:");

這些方法雖然簡單易用,但存在明顯的局限性:

  • 樣式固定,無法自定義;
  • 阻塞主線程,影響頁面性能;
  • 不支持異步處理,用戶體驗較差。

隨著前端技術的發展,越來越多開發者選擇使用 <div> + CSS + JavaScript 來模擬彈窗,但這種方式需要大量手動控制顯示/隱藏邏輯。

1.2 JavaScript 彈窗的局限性

特性alert() / confirm()自定義彈窗Close Watcher API
樣式定制???
非阻塞???
易用性???
異步支持???

1.3 Chrome 新特性:Close Watcher API 簡介

Close Watcher API 是一個實驗性 Web API,旨在提供一種輕量級的方式來監聽窗口關閉行為,并在適當的時候觸發模態對話框或彈窗。

核心功能特點

  • 支持監聽窗口關閉事件(如點擊“X”按鈕)。
  • 可用于 <dialog> 元素,增強其交互能力。
  • 減少對 JavaScript 的依賴,提升性能與安全性。
  • 支持異步操作,避免阻塞主線程。

2. Close Watcher API 的工作原理

2.1 如何監聽窗口關閉行為

Close Watcher API 提供了一個新的構造函數 CloseWatcher,可以通過監聽 close 事件來響應用戶的關閉行為。

const watcher = new CloseWatcher();watcher.addEventListener('close', () => {console.log('用戶嘗試關閉窗口!');
});

2.2 與 <dialog> 結合使用

Close Watcher 可以與 HTML5 原生 <dialog> 元素結合使用,實現更加可控的彈窗體驗。

<dialog id="myDialog"><p>這是一個由 Close Watcher 控制的彈窗

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

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

相關文章

調出事件查看器界面的4種方法

方法1. 方法2. 方法3. 方法4.

Ubuntu 安裝遠程桌面連接RDP方式

1. 安裝 XFCE4 桌面環境 如果你的 Ubuntu 系統默認使用 GNOME 或其它桌面環境&#xff0c;可以安裝輕量級的 XFCE4&#xff1a; sudo apt update sudo apt install xfce4 xfce4-goodies 說明&#xff1a;xfce4-goodies 包含額外的插件和工具&#xff08;如面板插件、終端等&a…

LWIP傳輸層協議筆記

傳輸協議簡介 文件/圖片/視頻 都是一堆二進制數據 經過傳輸層來傳輸 這兩種協議有什么區別呢&#xff1f; 傳輸層的TCP/UDP三個步驟 TCP使用傳輸流程 1、三次握手 作用&#xff1a;三次握手就是建立連接的過程 2、傳輸數據 作用&#xff1a;建立連接完成之后&#xff…

數據分析與邏輯思維:六步解決業務難題;參考書籍《數據分析原理:6步解決業務分析難題 (周文全, 黃怡媛, 馬炯雄)》

文章目錄 一、懂業務&#xff1a;業務背景與邏輯前提1.1 明確業務目標與問題定義1.2 培養批判性思維與高于業務視角 二、定指標&#xff1a;構建科學的指標體系2.1 指標拆解與維度分析2.2 典型指標體系案例&#xff1a;用戶與業務視角 三、選方法&#xff1a;匹配業務需求的分析…

開啟WSL的鏡像網絡模式

開啟WSL的鏡像網絡模式 前提 Windows主機系統版本高于Windows 11 22H2。WLS版本>2.0。 可輸入wsl --version查看當前系統wsl版本。 修改設置 圖形界面修改 在開始菜單中搜索&#xff1a;wsl settings&#xff0c;結果如下圖所示&#xff1a; 點擊“打開”&#xff0…

Python爬蟲第20節-使用 Selenium 爬取小米商城空調商品

目錄 前言 一、 本文目標 二、環境準備 2.1 安裝依賴 2.2 配置 ChromeDriver 三、小米商城頁面結構分析 3.1 商品列表結構 3.2 分頁結構 四、Selenium 自動化爬蟲實現 4.1 腳本整體結構 4.2 代碼實現 五、關鍵技術詳解 5.1 Selenium 啟動與配置 5.2 頁面等待與異…

聚類分析的原理、常用算法及其應用

聚類分析的原理、常用算法及其應用 一、聚類分析的基本原理 &#xff08;一&#xff09;什么是聚類分析 聚類分析是一種無監督學習方法&#xff0c;其目標是將數據集中的樣本劃分為若干個簇&#xff0c;每個簇包含相似的樣本。聚類分析的核心思想是通過某種相似性度量&#…

Aware和InitializingBean接口以及@Autowired注解失效分析

Aware 接口用于注入一些與容器相關信息&#xff0c;例如&#xff1a; ? a. BeanNameAware 注入 Bean 的名字 ? b. BeanFactoryAware 注入 BeanFactory 容器 ? c. ApplicationContextAware 注入 ApplicationContext 容器 ? d. EmbeddedValueResolverAware 注入 解析器&a…

JDK 安裝與配置

JDK 全稱是 Java SE Development Kit&#xff0c;翻譯成中文就是&#xff1a;Java 標準版開發包&#xff0c;是 Sun 公司&#xff08;后被 Oracle 公司收購&#xff09;專門外 Java 開發人員提供的一套用于開發 Java 應用程序的工具包。 JDK 提供了用于編譯和運行 Java 應用程序…

防火墻來回路徑不一致導致的業務異常

案例拓撲&#xff1a; 拓撲描述&#xff1a; 服務器有2塊網卡&#xff0c;內網網卡2.2.2.1/24 網關2.2.254 提供內網用戶訪問&#xff1b; 外網網卡1.1.1.1/24&#xff0c;外網網關1.1.1.254 80端口映射到公網 這個時候服務器有2條默認路由&#xff0c;分布是0.0.0.0 0.0.0.0 1…

Java面試高頻問題(36-37)

三十六、服務網格核心能力與設計模式 服務網格架構分層模型 mermaid graph TB subgraph 數據平面 ASidecar代理 -->攔截流量 BEnvoy B -->協議轉換 CHTTP/gRPC B -->策略執行 D熔斷/限流 end subgraph 控制平面 E配置中心 -->下發策略 Fistiod F -->證書管理 …

redis數據結構-02(INCR、DECR、APPEND)

字符串操作&#xff1a;INCR、DECR、APPEND Redis 字符串不僅僅是簡單的文本&#xff0c;它們還可以表示數字。此功能使我們能夠直接對存儲在 Redis 中的字符串值執行原子的遞增和遞減操作。此外&#xff0c;Redis 還提供了一種附加到現有字符串的方法&#xff0c;從而可以輕松…

Spring MVC 中Model, ModelMap, ModelAndView 之間有什么關系和區別?

在 Spring MVC 中&#xff0c;Model, ModelMap, 和 ModelAndView 都是用來在 Controller 和 View 之間傳遞數據的&#xff0c;但它們在使用方式和功能上有所不同。 它們的核心在于&#xff1a;Spring MVC 需要知道兩件事來渲染視圖&#xff1a;① 數據 (Model) ② 視圖名稱 (V…

配置Hadoop集群-免密登錄

在 Hadoop 集群中配置免密登錄是確保各節點間高效通信的關鍵步驟。以下是基于 SSH 密鑰認證的免密登錄配置方案&#xff0c;支持主節點&#xff08;NameNode&#xff09;到所有從節點&#xff08;DataNode&#xff09;的無密碼訪問&#xff1a; 1. 環境準備 集群規劃&#xff…

C++類與對象(二):六個默認構造函數(一)

在學C語言時&#xff0c;實現棧和隊列時容易忘記初始化和銷毀&#xff0c;就會造成內存泄漏。而在C的類中我們忘記寫初始化和銷毀函數時&#xff0c;編譯器會自動生成構造函數和析構函數&#xff0c;對應的初始化和在對象生命周期結束時清理資源。那是什么是默認構造函數呢&…

嵌入式培訓之數據結構學習(一)數據結構的基礎概念、線性表

一、基礎概念 1、數據結構&#xff1a;相互之間存在一種或多種特定關系的數據元素的集合。&#xff08;特定關系有邏輯關系與線性關系&#xff09; &#xff08;1&#xff09;邏輯結構 集合&#xff0c;所有數據在同一個集合中&#xff0c;關系平等&#xff08;數組&#xff…

Android Exoplayer 實現多個音視頻文件混合播放以及音軌切換

在之前的文章ExoPlayer中常見MediaSource子類的區別和使用場景中介紹了Exoplayer中各種子MediaSource的使用場景&#xff0c;這篇我們著重詳細介紹下實現多路流混合播放的用法。常見的使用場景有&#xff1a;視頻文件電影字幕、正片視頻廣告視頻、背景視頻背景音樂等。 初始化…

推特逆向算法,推特爬蟲,數據分析,推特關鍵詞搜索

祝大家五一假期快樂&#xff01; 最近推特加了逆向&#xff0c;頻繁出現404&#xff0c;無法正常抓取數據&#xff0c;這里給出推特逆向的思路及代碼&#xff0c;供大家參考學習&#xff01; 本文將介紹如何使用 Python 模擬請求 Twitter 的 GraphQL 接口&#xff0c;結合 re…

圖形化編程平臺的破局之道:從工具同質化到生態差異化

一、同質化困局的底層邏輯剖析 在全球圖形化編程市場中&#xff0c;工具功能趨同已成為行業共識。據 Statista 2024 年數據顯示&#xff0c;主流平臺的基礎功能重合度高達 78%&#xff0c;核心模塊&#xff08;如條件判斷、循環結構&#xff09;的實現方式高度相似。這種現象的…

【Rust】枚舉和模式匹配

目錄 枚舉和模式匹配枚舉的定義Option 枚舉控制流運算符 match簡潔控制流 if let 枚舉和模式匹配 枚舉的定義 結構體給予你將字段和數據聚合在一起的方法&#xff0c;像 Rectangle 結構體有 width 和 height 兩個字段。而枚舉給予你一個途徑去聲明某個值是一個集合中的一員。…