1. 程式人生 > >使用 h5 新特性,輕鬆監聽任何 App 自帶返回鍵

使用 h5 新特性,輕鬆監聽任何 App 自帶返回鍵

1、前言

如今 h5 新特性、新標籤、新規範等有很多,而且正在不斷完善中,各大瀏覽器商對它們的支援,也是相當給力。作為前端程式設計師,我覺得我們還是有必要積極關注並勇敢地加以實踐。接下來我將和各位分享一個特別好用的 h5 新特性(目前也不是特別新),輕鬆監聽任何 App 自帶的返回鍵,包括安卓機裡的物理返回鍵,從而實現專案開發中進一步的需求。

2、起因

大概半年前接到 pm 一需求,用純 h5 實現多 audio 的播放、暫停、續播,頁面放至駕考寶典 App 中,與客戶端沒有任何的互動,所以與客戶端相關的 js 不需要引用。看上去這需求挺簡單的嘛,雖然之前也沒做過類似的需求。不管三七二十一,lu起袖子就是幹。開始了學習之旅。

3、我這裡著重介紹下我具體是怎麼監聽任何 App 自帶的返回鍵,以及安卓機裡的物理返回鍵。

那為什麼我要去監聽呢,這裡我有必要強調強調再強調。蘋果手機不管是微信、QQ、App,還是瀏覽器裡,涉及到 audio、video,返回上一頁系統會自動暫停當前的播放的,但不是所有安卓機都可以。所以我們自己必須自定義監聽。很多朋友可能第一想法就是百度,然後出來的答案無非是這樣

  1. pushHistory();

  2. window.addEventListener("popstate",function(e){

  3.    alert("我監聽到了瀏覽器的返回按鈕事件啦");//根據自己的需求實現自己的功能

  4. },false);

  5. function

    pushHistory(){

  6. var state ={

  7.        title:"title",

  8.        url:"#"

  9. };

  10.    window.history.pushState(state,"title","#");

  11. }

是不是很眼熟?然而關鍵需求不能完美實現,要這段程式碼有何用,當時我也是絞盡腦汁。直到經過大神好友指導,複製了這段程式碼

  1. var hiddenProperty ='hidden'in document ?'hidden':

  2. 'webkitHidden'in document ?'webkitHidden':

  3. 'mozHidden'in document ?'mozHidden'

    :

  4. null;

  5. var visibilityChangeEvent = hiddenProperty.replace(/hidden/i,'visibilitychange');

  6. var onVisibilityChange =function(){

  7. if(document[hiddenProperty]){

  8.        console.log('頁面非啟用');

  9. }else{

  10.        console.log('頁面啟用')

  11. }

  12. }

  13. document.addEventListener(visibilityChangeEvent, onVisibilityChange);

所有問題迎刃而解。 這段程式碼的原理我個人理解就是通過判斷使用者瀏覽的是否為當前頁,從而進行相關操作。 這是 MDN 相關連結: https://developer.mozilla.org/zh-CN/docs/Web/API/Document/hidden

4、手機相容性

眾所周知現在的安卓機系統 4.0 等都是低配版了,該屬性大部分安卓機都能識別,個人低配版安卓機無法識別,原因在於 navigator.userAgent 核心版本過低,chrome 現在很多是 64 + 了,所以遇到該問題只要想辦法相容它就好了。

並不是說真的可以通過 JS 監聽到使用者對 App 裡的自帶返回鍵的直接操作,甚至安卓的物理返回鍵,而是通過轉變思路,快速實現需求。希望這個特效能幫到各位。

原文:https://segmentfault.com/a/1190000013700474 作者:駕考寶典WckY

---- 廣告 ----

給大家推薦個活躍的開發者社群:掘金是面向程式設計師的的技術社群,從大廠技術分享到前端開發最佳實踐,掃二維碼下載掘金APP,來掘金你不會錯過任何一個技術乾貨。

640?wx_fmt=gif

相關推薦

使用h5特性輕鬆任何App返回

1、前言 如今h5新特性、新標籤、新規範等有很多,而且正在不斷完善中,各大瀏覽器商對它們的支援,也是相當給力。作為前端程式設計師,我覺得我們還是有必要積極關注並勇敢地加以實踐。接下來我將和各位分享一個特別好用的h5新特性(目前也不是特別新),輕鬆監聽任何App自帶的返回鍵,包括安卓機裡的物理返回鍵,從而

使用 h5 特性輕鬆任何 App 返回

1、前言如今 h5 新特性、新標籤、新規範等有很多,而且正在不斷完善中,各大瀏覽器商對它們的支援

html5任何App返回javascript事件

1、前言 如今h5新特性、新標籤、新規範等有很多,而且正在不斷完善中,各大瀏覽器商對它們的支援,也是相當給力。作為前端程式設計師,我覺得我們還是有必要積極關注並勇敢地加以實踐。接下來我將和各位分享一個特別好用的h5新特性(目前也不是特別新),輕鬆監聽任何App自帶的返回鍵,

h5任何 App 返回以及安卓機裡的物理返回

var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ?

vue裡安卓的物理返回

Hybrid App中,原生內嵌H5單頁,按安卓物理返回鍵的時候會返回到上一個路由, 實際中需求是:當有彈層的時候,按物理返回鍵是關閉彈層,是頁面的時候才執行返回上一個路由, 開始的方案是Android原生重寫方法onKeyDown(),H5 JsBridge js去呼叫方法,當需要的時候遮蔽物理返回鍵,

Cocos Creator 安卓螢幕下方返回

addEscEvent = function(node){ cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyPressed: function(keyCode, event){

頁面可見性API解決H5端頁面可見性的最終方案

  一、簡介 背景: 一般我們在進行前端頁面開發時,對於使用者正在離開頁面。常用的方法是監聽下面三個事件。 pagehide beforeunload unload 但是,這些事件在手機上可能不會觸發,頁面就直接關閉了。因為手機系統可以將一個

H5特性

cat sage drag 資源共享 document doc arch query 資源 新增選擇器 document.querySelector、document.querySelectorAll 拖拽釋放(Drag and drop) API 媒體播放的 vi

H5特性:video與audio的使用

一個 ace mil lin pro 地址 mp4 epg 屬性方法 HTML5 DOM 為 <audio> 和 <video> 元素提供了方法、屬性和事件。 這些方法、屬性和事件允許您使用 JavaScript 來操作 &l

Java精品高級課架構課java8特性P2P金融項目程序設計功能設計數據庫設計第三方支付web安全視頻教程

數據庫設計 zfs 調優 pex 完整版 city 後臺 中間件 集群 36套精品Java架構師,高並發,高性能,高可用,分布式,集群,電商,緩存,性能調優,設計模式,項目實戰,P2P金融項目,大型分布式電商實戰視頻教程 視頻課程包含: 高級Java架構師包含:Sp

[轉]addEventListener() 方法事件

傳遞參數 調用 參數 spa 默認 mouse 可選 als http 轉載 白楊-M http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件監聽 你可以使用 r

h5特性 File API詳解

sda 文件讀取 預覽 文件名 標簽 dom 直接 mod 詳解   之前一直覺得h5的新特性就是一些新標簽呢,直到想研究一下圖片上傳預覽的原理,才發現還是有好多新的api的,只是不兼容ie低版本,挺可惜的,   File API在表單中文件輸入字段基礎上,又添加了一些直接

JAVA9特性集合工廠方法

mac 代碼 ear space strac shared and port tor 通常,您希望在代碼中創建一個集合(例如,List 或 Set ),並直接用一些元素填充它。 實例化集合,幾個 “add” 調用,使得代碼重復。 1 List<String>

H5特性之video audio

video += duration ror ner bsp ren 當前 默認 1.標簽 <video src="~~~" autoplay loop controls poster="~~~.jpg"> 你的瀏覽器不支持video~~ </vi

TextView 的特性Autosizing 到底是如何實現的? | 源碼分析

osi 了解 roi https 行數 eset ott 特性 largest 一、前言 Hi,大家好,我是承香墨影! 前兩天聊了一下 Autosizing 的使用,反映還不錯。畢竟是這種能解決實際問題的新 Api,確實在需要的時候,用起來會很順手。 簡單回顧一下,Aut

36套精品Java高級課架構課java8新特性,P2P金融項目程序設計功能設計數據庫設計第三方支付web安全高並發高性能高可用分布式集群電商緩存性能調優設計模式項目實戰大型分布式電商項目實戰視頻教程

java cti 投資 調優 dubbo pac 性能 -s clas 36套精品Java高級課,架構課,java8新特性,P2P金融項目,程序設計,功能設計,數據庫設計,第三方支付,web安全,高並發,高性能,高可用,分布式,集群,電商,緩存,性能調優,設計模式,項

java8特性P2P金融項目程序設計功能設計架構師視頻教程

orm 入門到 mongo 1.0 asf cat 身邊 last opp 36套精品Java精品高級課,架構課,java8新特性,P2P金融項目,程序設計,功能設計,數據庫設計,第三方支付,web安全,高並發,高性能,高可用,分布式,集群,電商,緩存,性能調優,設計模式,

前端面試基礎-html篇之H5特性

-h 側邊欄 沒有 開發者 制作 article 廣告 隱藏 val h5的新特性(目前個人所了解)如下 語義化標簽 表單新特性 視頻(video)和音頻(audio) canvas畫布 svg繪圖 地理定位 為鼠標提供的拖放API webworker (重點)Stora

JDK8特性給接口添加一個默認實現

out pack args 一個 print 允許 info ati jdk 在JDK8中,允許給接口本身添加一個默認的實現。用“default”進行修飾。如下實例 package interfacetest; public interface TestInterfac

JDK8特性方法的引用

技術分享 main 圖片 new cto ger ons alt 標識 引用方法並運行 在Java中,方法和構造方法都看作是對象的一種,那麽你要引用它(不是調用),則可以用::來引用。用來存儲這個引用的類型用@FunctionlaInterface註解來標識。 示例: p